Wie kann ich die Größe einer Java-Swing-JTextArea
Ich bin versucht, einen Textbereich in einem Dialogfeld unter Verwendung von Java Swing. Ich habe ein problem der Einstellung der Größe der JTextArea. Die Breite der text-Bereich ist immer gleich die ganze Breite des Fensters erstreckt und mit dem Fenster, wenn ich die Größe ändern.
private void arrangeComponents() {
JTextArea textArea = new JTextArea();
JPanel outerPanel = new JPanel();
outerPanel.setLayout(new BoxLayout(outerPanel, BoxLayout.PAGE_AXIS));
JScrollPane scrollPane = new JScrollPane(textArea);
outerPanel.add(scrollPane, BorderLayout.CENTER);
Container contentPane = getContentPane();
contentPane.add(outerPanel, BorderLayout.CENTER);
}
Möchte ich die JTextArea werden horizontal ausgerichtet, um die Mitte des Fensters und ändert nicht seine Größe.
Was habe ich falsch gemacht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die
JTextArea(int rows, int columns)
Konstruktor gibt an, dass Zeilen und Spalten, wie dargestellt hier, und vernachlässigen Sie nicht zupack()
den umschließendenWindow
.pack()
Erinnerung!Ein BoxLayout nehmen nicht Zwänge, so das BorderLayout.CENTER unnötig ist.
Das problem ist, dass ein BoxLayout respektiert die maximale Größe der Komponente, die für eine scrollpane ist sehr groß.
Statt mit einem BoxLayout, verwenden Sie einfach ein panel mit einem FlowLayout.
Führen Sie das Beispiel unten, um zu sehen, was Sie gerade tun. Dann kommentieren Sie das setLayout (...) - Anweisung und starten Sie erneut. Standardmäßig ist der panel verwendet ein FlowLayout, so werden Sie bekommen, was Sie wollen.
Oder wenn Sie wirklich wollen, zu halten, das BoxLayout dann zu verlassen, halten Sie die setLayout (...) - Anweisung und dann die maximale Größe festlegen, entspricht die bevorzugte Größe. Viele Leute sagen, man sollte nie auf eine "setXXX ()" - Methode direkt und stattdessen sollten Sie überschreiben die setMaximumSize () - Methode der scrollpane-Komponente zu der gerade wieder die gewünschte Größe ein.
Beachten, wenn bei der Prüfung dieser beiden Lösungen stellen Sie sicher, das Fenster kleiner als das scrollpane, um zu sehen, wie die einzelnen layout funktioniert anders.
ich fand dieses aus einem einfachen coding-Website. Dieses Codebeispiel kann nützlich sein für Sie.
invokeLater()
. 🙂Rufen Sie einfach die Methode für ur-text-Bereich:
setLineWrap(true);
Wenn JTextArea ist initializated
JTextArea text = new JTextArea(int rows, int columns)
rufen Sie einfach die Methode
text.setLineWrap(true)
dann text'size ist behoben.