2010-02-17 8 views
6

il codice è simile a questo:setBorder su JTextField non funziona? o lo fa?

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

Tuttavia, il campo di testo sta ignorando la mia chiamata a setBorder. Nessun cambiamento di sorta.

dovessi sostituirlo con un JLabel (per esempio)

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

vorrei vedere il bordo rosso.

Qualcuno può dirmi perché? O ancora meglio spiegami come aggiungere un bordo nello JTextField?

+0

Che "dovrebbe" funzionare. Stai usando JTextField o una classe personalizzata che estende JTextField? Che altro stai facendo al JTextField? Stai ponendo il confine altrove? – Pace

+0

Ci vogliono due secondi per dimostrare se lo fa o no. Onesto. O prendi la mia parola o scrivi un piccolo test e vedi per te stesso. In ogni caso altre informazioni sono: L'uimanager è impostato su Windows UIManager.setLookAndFeel ("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); e non lavoro su una classe che estende JTextField. Sto usando lo stesso JTextField. –

+0

"dimostrare" Il comportamento dipenderà da PL & F, dalla versione di PL & F, dalla piattaforma, dalla versione della piattaforma e probabilmente dalla configurazione. Non così facile da dimostrare. Sarebbe più facile provarlo se includessi un esempio compilabile. –

risposta

6

Partenza this explanation/recommendation from the Java API

In generale, quando si desidera impostare un bordo su un componente Swing standard di diverso JPanel o JLabel, si consiglia di inserire il componente in un JPanel e set il confine sullo JPanel .

Quindi ... dovresti annidare il tuo JTextField in JPanel o JLabel e mettere il bordo su JPanel o JLabel. Ecco!

+5

Heh. Immagino che cambiare una linea di documenti API sia più facile che riparare una sfera di codice per usare "BorderUIResource". –

Problemi correlati