Java JTextArea, которая автоматически изменяет размеры и прокручивает - PullRequest
13 голосов
/ 02 октября 2010

У меня есть JTextArea в JPanel. Как я могу сделать так, чтобы JTextArea заполнял всю JPanel и изменял размеры, когда JPanel изменяет размеры, и прокручивал, когда набиралось слишком много текста?

Ответы [ 2 ]

19 голосов
/ 02 октября 2010
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());  //give your JPanel a BorderLayout

JTextArea text = new JTextArea(); 
JScrollPane scroll = new JScrollPane(text); //place the JTextArea in a scroll pane
panel.add(scroll, BorderLayout.CENTER); //add the JScrollPane to the panel
// CENTER will use up all available space

См. http://download.oracle.com/javase/6/docs/api/javax/swing/JScrollPane.html или http://download.oracle.com/javase/tutorial/uiswing/components/scrollpane.html для получения дополнительной информации о JScrollPane

7 голосов
/ 02 октября 2010

Поместите JTextArea внутри JScrollPane и поместите его в JPanel с макетом, который фиксирует размер. Например, пример с GridBagLayout может выглядеть так:

JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());

JScrollPane scrollpane = new JScrollPane();
GridBagConstraints cons = new GridBagContraints();
cons.weightx = 1.0;
cons.weighty = 1.0;
panel.add(scrollPane, cons);

JTextArea textArea = new JTextArea();
scrollPane.add(textArea);

Это только грубый набросок, но он должен проиллюстрировать, как это сделать.

...