web-dev-qa-db-fra.com

Swing JTextField comment supprimer la bordure?

Est-il possible de supprimer une bordure dans un JTextField?

txt = new JTextField();
txt.setBorder(null);   // <-- this has no effect.

Je voudrais vraiment qu'il ressemble à un JLabel - mais j'ai toujours besoin que ce soit un JTextField parce que je veux que les gens puissent le mettre en évidence.

20
Markus V.

D'après une réponse à votre précédente question vous savez que certains PL & F peuvent encombrer la frontière.

La solution évidente est donc de remplacer la méthode setBorder que le PL&F appelle et de rejeter la modification.

JTextField text = new JTextField() {
    @Override public void setBorder(Border border) {
        // No!
    }
};
17
Tom Hawtin - tackline
JTextField textField = new JTextField();
textField.setBorder(javax.swing.BorderFactory.createEmptyBorder());

http://Java.Sun.com/javase/6/docs/api/javax/swing/BorderFactory.html

Lorsque vous définissez la bordure sur `` null '', vous dites en fait l'apparence d'utiliser le style de bordure native (du système d'exploitation) s'il en existe un.

60
Björn

Essayez de le définir sur BorderFactory.createEmptyBorder () au lieu de null. Parfois, cela "fait l'affaire", car le définir sur null a en fait une signification différente.

Si cela ne fonctionne pas, il est possible que l'apparence que vous utilisez soit prioritaire. Utilisez-vous la valeur par défaut ou quelque chose de personnalisé?

3
Uri

Non, vous ne pouvez pas supprimer la bordure. Surtout sur l'affichage des composants AWT. Ils utilisent l'ensemble de widgets natifs (sont dessinés en dehors de Java).

Essayez de faire la ligne qui est similaire à votre arrière-plan ... par exemple, si votre arrière-plan est blanc, vous devez:

setBorder(BorderFactory.createLineBorder(Color.white));

Réglez ensuite l'arrière-plan sur blanc:

setBackground(Color.white);
2
stuklist
txt.setBorder(new LineBorder(Color.BLACK,0));

pourrait fonctionner.

1
gerardw