Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
JTextfield nur so breit dass alle zeichen sichtbar sind
wie mache ich es das ein JTextField immer nur so breit angezeigt wird,so dass alle Zeichen darin sichtbar sind ? Ich meine das nicht dynamisch ,also während der Benutzer eingibz sondern statisch wenn setText aufegrufen wird.
das hängt von dem Layout des Containers ab, auf dem du das Textfeld platzierst. Mach am besten einen Zwischencontainer mit einem Layout, das nicht die den Aufruf der Methode setMaximumSize überschreibt.
Bsp:
Java:
import java.awt.BorderLayout;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class SecureTest extends JFrame{
public SecureTest(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textfield = new JTextField();
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS));
panel.add(textfield);
this.add(panel,BorderLayout.CENTER);
this.pack();
this.setSize(800, 600);
textfield.setText("Ein Text mit bestimmter Länge");
textfield.setMaximumSize(textfield.getPreferredSize());
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new SecureTest().setVisible(true);
}
});
}
}
, damit kannst du die Breite (in Buchstaben) beeinflussen. Im folgenden Beispiel sollte das Textfeld also breit genug sein, damit 5 Buchstaben stets sichtbar sind:
Java:
JTextField myEdit = new JTextField("12345", 5);
Meines Wissens nach aber beeinflussen diese columns die bevorzugte Breite, und dann kommt es wieder auf den Layout Manager drauf an, was dieser draus macht.
Wenn dein Layout Manager sich nicht an diese Breite halten will, musst du wohl
Code:
setMinimumSize()
bemühen.
Verstehe ich zudem richtig, dass du willst, dass sich die Breite des Textfeldes immer dann anpasst, wenn du
Code:
setText()
aufrufst? In dem Fall solltest du dein eigenes
Code:
JTextField
erben lassen und die Methode überschreiben, irgendwie in der Form: