Как установить размер JTextPane в соответствии с размером JPanel?

Я хочу установить размер JTextPane в соответствии с размером панели, чтобы при добавлении других панелей она менялась соответствующим образом. Но он просто дает небольшую текстовую панель в центре, и когда я добавляю немного текста, его размер изменяется соответственно.

JPanel panel = new JPanel();
JTextPane txt = new JTextPane();
JScrollPane pane = new JScrollPane();
pane.add(txt);
panel.add(pane,BorderLayout.CENTER);
add(pane);

Теперь jtextpane просто появляется в центре экрана, как маленькая коробка. Я хочу, чтобы он отображался в соответствии с размером панели

2 ответа

Решение

JPanel использования FlowLayout по умолчанию размеры компонентов в соответствии с их предпочтительными размерами. Ты можешь использовать BorderLayout который будет использовать максимально возможную площадь.

Также используя ограничения, такие как BorderLayout.CENTER не имеет никакого эффекта, если контейнер фактически не использует BorderLayout, Dont add компоненты к JScrollPane, Это заменит все компоненты в представлении компонента. Вместо этого установите JTextPane как ViewPortView, например

JPanel panel = new JPanel(new BorderLayout());
JTextPane txt = new JTextPane();
JScrollPane pane = new JScrollPane(txt);
// pane.add(txt); remove
panel.add(pane, BorderLayout.CENTER);

Читать:

Вы добавили pane дважды. добавлять panel к вашей базе (JFrame?) Вместо этого и не забудьте на самом деле установить свой JPanel использовать BorderLayout,

Другие вопросы по тегам