Изменить размер JPanel в соответствии с JDialog
Вопрос
У меня есть JDialog
, который содержит серию JPanels
в CardLayout
. Некоторые из этих панелей содержат JTables
, размер которых я хотел бы изменить в соответствии с любым изменением размера JDialog
. Я не уверен, как этого добиться, и любая помощь будет принята с благодарностью. Р>
В настоящее время таблицы просто сохраняют свой текущий размер и не масштабируются. Я уверен, что это что-то простое, но у меня проблемы с поиском необходимого подхода. Р>
Большое спасибо заранее. Я предоставлю дополнительную информацию, если потребуется. Р>
edit: JDialog
используется в качестве мастера, поэтому одновременно отображается только одна из панелей, поэтому используется CardLayout
. В идеале я хотел бы сохранить это менеджер компоновки, хотя, если это является источником проблем, то, очевидно, я бы переосмыслил!
Решение
Вы можете оставить CardLayout, но вам нужно сделать следующее:
1. установите макет вашего JDialog на BorderLayout и добавьте новый JPanel ( contentPanel ) в JDialog
2. теперь установите этот макет contentPanel на CardLayout
3. при необходимости добавьте другие панели в раскладку карты.
4. Также убедитесь, что вы используете макеты, которые вы используете на каждой из панелей, которые вы добавляете в CardLayout. Я думаю, что по умолчанию JPanel использует FlowLayout, и это не идеально для JTable. Поэтому вам, возможно, придется поэкспериментировать с макетом панели, содержащей таблицу; попробуйте BoxLayout или BorderLayout для этого. Р>