2016-07-11 19 views
0

Ich möchte eine JTextField erscheinen, wenn Benutzer "Extra" in JComboBox Liste auswählen und sonst verborgen. Aber das JTextField wird nicht angezeigt, wenn Benutzer "Extra" auswählt, aber es erscheint, wenn ich das Fenster verkleinere und es wieder vergrößere. Danach funktioniert es richtig, nur zum ersten Mal erscheint es nicht. Warum verhält es sich so? Irgendeine Lösung dafür?JTextField mit JComboBox funktioniert nicht richtig

Hier ist mein Code:

getCmbJtocsv_C_8().addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
    { 

     input3 = (String)adaptor.getCmbJtocsv_C_8().getSelectedItem(); 
     adaptor.getTxtJtocsv_C_8().setVisible(false); 

     if(input3.equals("extra")){ 
      adaptor.getTxtJtocsv_C_8().setVisible(true); 
     } 
} 

ich den String-Vergleich haben sich geändert, und ich bin immer noch das gleiche Ergebnis zu erzielen.

+0

hier ist dein Problem. input3 == "extra". Sie müssen lernen, wie (String) Objekte zu vergleichen – Stultuske

+0

Ich versuchte auch Input3.equals ("extra"), immer noch das gleiche Ergebnis. – mariz

+1

möglicher Grund kann der Layoutmanager sein, den Sie verwenden. Vollständiger Code oder ausführbarer Code könnte hilfreich sein, um das Problem zu lösen. – mfidan

Antwort

1

Standardmäßig haben Swing-Komponenten eine Größe von (0, 0). Die Größe/Position einer Komponente wird vom Layout-Manager bestimmt, wenn der Rahmen gepackt oder sichtbar gemacht wird.

So würde ich vermuten, dass, da Sie mit dem Textfeld unsichtbar beginnen, die Größe des übergeordneten Bedienfelds das Textfeld nicht enthält. Wenn Sie die Größe des Rahmens ändern, wird das Textfeld angezeigt, da seine Größe und die Größe des Bereichs neu berechnet werden.

Jetzt wurde die Größe des Textfelds berechnet, sodass Sie die Sichtbarkeit nach Bedarf umschalten können.

Wenn dies nicht hilft, dann eine SSCCE Post, die das Problem demonstriert. Erstellen Sie einen Rahmen mit nur einem Kombinationsfeld und einem Textfeld, um das Problem zu veranschaulichen. Zukünftig sollten alle Fragen einen SSCCE enthalten, da wir den Kontext Ihrer Anwendung anhand einiger Zeilen Code nicht erraten können.

+0

yup, das ist das genaue Problem hier.Now ich änderte mein Layout zu Kartenlayout, in der ersten Karte wird das Panel leer sein und in der zweiten Karte wird die Textbox da sein. Dann zeige ich die Karte, die entsprechend benötigt wird. jetzt funktioniert der Code gut, danke ... – mariz

+0

@mariz, 'ich änderte mein Layout in Kartenlayout' - Immer eine gute Idee, den Layoutmanager die Arbeit machen zu lassen. – camickr