2010-02-17 3 views
6

Der Code ist wie folgt:setBorder auf JTextField funktioniert nicht? oder tut es?

JTextField txt = new JTextField(); 
txt.setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.red)); 

jedoch das Textfeld meinen Aufruf an setBorder ignoriert. Keine Änderungen wie auch immer.

war ich es mit einem JLabel (zum Beispiel)

JLabel txt = new JLabel(); 
txt.setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.red)); 

Ich würde sieht den roten Rahmen zu ersetzen.

Kann mir jemand sagen warum? Oder noch besser erklären, wie man eine Grenze in der JTextField hinzufügen?

+0

Das "sollte" funktionieren. Verwenden Sie JTextField oder eine benutzerdefinierte Klasse, die JTextField erweitert? Was machst du sonst noch mit dem JTextField? Setzen Sie die Grenze anderswo? – Pace

+0

Es dauert zwei Sekunden, um zu beweisen, ob es das tut oder nicht. Ehrlich. Entweder nimmst du mein Wort oder schreibst einen kleinen Test und siehst für dich selbst. Wie auch immer andere Bits von Informationen sind: Der Uimanager ist auf Windows eingestellt UIManager.setLookAndFeel ("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); und ich arbeite nicht an einer Klasse, die JTextField erweitert. Ich benutze das JTextField selbst. –

+0

"zu beweisen" Das Verhalten wird von PL & F abhängen, Version von PL & F, Plattform, Version der Plattform und möglicherweise Konfiguration. Nicht so einfach zu beweisen. Es wäre einfacher zu versuchen, wenn Sie ein kompilierbares Beispiel hinzufügen würden. –

Antwort

6

Check out this explanation/recommendation from the Java API

Im Allgemeinen, wenn Sie eine Grenze auf einem Standard-Swing-Komponente andere als JPanel oder JLabel einstellen möchten, empfehlen wir, dass Sie in einem JPanel und stellen Sie die Komponente setzen die Grenze auf der JPanel.

Also ... sollten Sie Ihr JTextField in ein JPanel oder JLabel verschachteln und den Rahmen auf JPanel oder JLabel setzen. Voila!

+5

Heh. Ich denke, es ist einfacher, eine Zeile mit API-Dokumenten zu ändern, als einen Code-Code zu fixieren, um 'BorderUIResource' zu ​​verwenden. –