Fixes/festes Layout

zuckerbrini

Mitglied
Hi!

Ich habe eine Formular in Java gemacht, mit dem GroupBagLayout und ich habe eine JApplet. Sieht auch alles super aus und ist genauso wie ich es will.

Es gibt aber noch zwei Probleme:
1. Ich habe ein JTextfield (ganz am rechten Rand) das erstmal setVisible(false) ist. Wenn man nun auf einen bestimmten Button drückt soll es eingeblendet werden. Rechts wäre zwar nun noch mehr als genug Platz, ohne das Formular verschieben zu müssen, aber trotzdem blendete es mir rechts eben das Textfeld ein und verschiebt das ganze Formular nach links.

2. Ich erstelle dynamisch JCheckBoxen. Also der Benutzer kann einen Text eingeben und mit dem Text wird dann eine neue JCheckBox erstellt. Da mir ein zulanger Text ebenfalls wieder das Layout zerstört (also den ganzen Text in die Zeile schreibst und wieder einiges verschiebt) würde ich gerne den Text in mehrer Zeilen schreiben. Gibt es hierfür eine Möglichkeit. Also irgendwie wenn setText >50 soll er eine neue Zeile anfangen.

Danke schon mal für eure Hife!
 
Zur 2:
Ich kenne mich leider nicht mit swing Elementen aus, deswegen könnte ich Ihnen nur eine Lösung auf SWT Basis vorstellen, aber ich kann Ihnen einen Anreiz geben, wie ich es lösen würde.

Ich würde an das Textfeld einen ModifyListener anhängen der ständig beim Bearbeiten des Textes die Länge des Textes prüft, wenn diese Länge dann durch 50 teilbar ist, springt er eine Zeile weiter nach unten.

Java:
if(Integer.valueOf(text.getText().length()) % 50 == 0) {
   text.append("\n");
}
In wie fern, Funkionalitäten wie ModifyListener, bzw. Anhängen von Strings vorhanden sind, weiß ich nicht.
Hoffe ich konnte Ihnen wenigstens einen theoretischen Vorschlag unterbreiten.

Hier das komplette Textfeld auf SWT-Basis um mein Vorgehen nachzuvollziehen:
Java:
Text t1 = new Text(composite, SWT.MULTI | SWT.BORDER);
t1.setLayoutData(new GridData(500, 200));
t1.addModifyListener(new ModifyListener() {

   public void modifyText(ModifyEvent e) {
      Text control = (Text) e.getSource();
      if(Integer.valueOf(control.getText().length()) % 50 == 0) {
         control.append("\n");
       }
   }
});
 
Zurück