2011-01-01 9 views
2

Mein Code zeigt eine Schaltfläche in einem Textfeld, aber wenn sich der Eingabewert ändert, ändert sich auch die Größe des Textfelds. Das mag ich nicht. Gibt es eine Lösung, so dass die Textboxgröße fest bleibt? Oder eine andere Idee, wie man eine Schaltfläche in der Textbox erstellt? Das folgende ist mein Code:Schaltfläche in Textfeld

JPanel panel = new JPanel(); 
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); 
panel.add(textField); 
panel.add(button); 
panel.setBackground(textField.getBackground()); 
panel.setBorder(textField.getBorder()); 
textField.setBorder(null); 
+0

Ich bin mir nicht ganz sicher, was Sie erreichen möchten. Versuchen Sie nur, eine Schaltfläche mit Text daneben zu haben? –

+0

Nein Ich habe einen Button in textfeild, aber habe ein Problem oben – user542719

+1

Bitte geben Sie die Quelle des Codes an: http://tips4java.wordpress.com/2009/09/27/component-border/ – trashgod

Antwort

1

ein Border Versuchen und das Textfeld bei BorderLayout.CENTER und die Schaltfläche BorderLayout.EAST hinzufügen.

-1

ein anderes Layout verwenden oder versuchen, die absolute Positionierung

+0

Absolute Positionierung ist selten, wenn überhaupt, eine gültige Lösung . Wenn Sie über den Algorithmus verfügen, um die genaue Position und die Grenzen einer Komponente zu bestimmen, ist es logischer, ein benutzerdefiniertes Layout dieses Algorithmus zu erstellen. –

1

ich Ihren Code versucht, und es schien gut für mich zu arbeiten, mit einer geringfügigen Änderung. Es kann sein, dass sich das Panel selbst skaliert, nicht textField. Versuchen Sie, das Panel in ein anderes JPanel zu legen, um seine Form zu erzwingen.

JPanel panel  = new JPanel(); 
JPanel outerPanel = new JPanel(); 
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); 
panel.add(textField); 
panel.add(button); 
panel.setBackground(textField.getBackground()); 
panel.setBorder(textField.getBorder()); 
textField.setBorder(null); 
outerPanel.add(panel);
+0

danke es hat mein Problem gelöst – user542719

+0

Froh, zu helfen. Viel Glück bei Ihrem Projekt. –

1

Ihr Beispiel wird die zweite Alternative im Component Border Artikel beschrieben wird. Stattdessen möchten Sie install() eine ComponentBorder, eine dritte Alternative, die später in demselben Artikel beschrieben wird.

1

Gibt es eine Lösung, so dass die Textboxgröße fest bleibt?

Ich vermute, Sie JTextField wie schaffen:

JTextField textField = new JTextField(); 

In diesem Fall werden die Textfeldgröße ändert, wenn Sie Text hinzufügen.

Stattdessen sollten Sie verwenden:

JTextField textField = new JTextField(10); 

und das Textfeld wird eine konstante Größe bleibt ein mindestens 10 Zeichen vor dem Scrollen halten.

Verwandte Themen