Frage

Gibt es trotzdem eine Grenze in einem JTextField zu entfernen?

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

Ich möchte es wirklich wie ein JLabel aussehen -. Aber ich muß es noch ein JTextField sein, weil ich die Leute will in der Lage Highlight sein, es

War es hilfreich?

Lösung

Von einer Antwort auf Ihre vorherigen Frage Sie wissen, dass einige PL & Fs die Grenze verprügeln kann.

Die offensichtliche Lösung ist daher die setBorder Methode überschreiben, dass die PL & F ruft, und entsorgen Sie die Änderung.

JTextField text = new JTextField() {
    @Override public void setBorder(Border border) {
        // No!
    }
};

Andere Tipps

JTextField textField = new JTextField();
textField.setBorder(javax.swing.BorderFactory.createEmptyBorder());

http://java.sun.com/ JavaSE / 6 / docs / api / javax / Swing / BorderFactory.html

Wenn die Grenze zu ‚Null‘ zu setzen, haben Sie eigentlich den Blick zu sagen & Feel der nativen Grenze Stil zu verwenden (des Betriebssystems), wenn es einen gibt.

Versuchen Sie es auf Einstellung BorderFactory.createEmptyBorder () anstelle von null. Manchmal wird diese „funktioniert der Trick“, weil es zu null Einstellung tatsächlich eine andere Bedeutung hat.

Wenn das nicht funktioniert, ist es möglich, dass das Aussehen und das Gefühl, das Sie verwenden etwas überschreiben. Sind Sie den Standard oder etwas Brauch mit?

Nein, Sie können nicht die Grenze entfernen. Insbesondere über die Anzeige der AWT-Komponenten. Sie nutzen das native Widget-Set (außerhalb Java gezeichnet).

Versuchen Sie, die Linie zu machen, die zu Ihrem Hintergrund ähnlich ist ... zum Beispiel, wenn Ihr Hintergrund weiß ist, dann haben Sie an:

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

Dann den Hintergrund auf weiß gesetzt:

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

funktionieren könnte.

Die einzige Möglichkeit, es unter allen Umständen funktioniert zu machen, ist die folgende Einstellung:

setBorder (BorderFactory.createLineBorder (new Color (0, 0, 0, 0), 2));

Im anderen Fall (wenn Sie null Hintergrund des übergeordneten Container) Sie werden sehen, das „Ich“ Cursor verbleibende immer am linken Rand Ihres JTextField. (Einfach ein paar Tests machen für verschiedene Rahmenstärke und beobachten ganz seltsame Art und Weise die JTextField setzt den Cursor, wenn Sie es erstmals aktiviert werden.)

Alternativ können Sie einstellen:

setBorder (BorderFactory.createLineBorder (getBackground (), 2));

, aber Sie werden das Feld opticaly größer um 2 Pixel in allen vier Richtungen erhalten. Wenn Sie nicht über die Rahmenstärke angeben, werden Sie den Cursor zwischen diesem Rand und dem Feld sehen übrigen für immer.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top