Jave Swing Eclipse - JPanel и компоненты автоматически меняют размеры - PullRequest
0 голосов
/ 02 мая 2018

Я поддерживаю систему, которая требует от меня изменения размеров компонентов в диалоговом окне, диалоговое окно вызывает панель классов Java.

Что должно произойти: enter image description here

Что сейчас происходит: enter image description here

Примечание. Изображение на нижнем слое соответствует измененному. В то время как изображение на верхнем слое является диалоговым окном, размер которого еще не изменен.

Как видите, компонент JPanel (с черной рамкой) не изменяется. Я пытаюсь добиться того, что происходит с нижним слоем изображения первого вложения.

Я пытался применить ответ в Как динамически управлять компонентами автоматического изменения размера в Java Swing и создавать шаблоны в текущем коде, но поскольку моя панель вызывается только в диалоговом окне, существуют ограничения. Проблема в том, что компоненты и их иерархия уже реализованы, мне просто нужно сделать это с автоматическим изменением размера.

Вот мой текущий набросок:

enter image description here

1 Ответ

0 голосов
/ 02 мая 2018

Если вы хотите простое решение, вы можете использовать менеджер раскладки, как описано здесь . Или, если вы хотите избежать менеджера компоновки (как я), тогда ваша программа может изменять размеры элементов каждый раз, когда происходит событие изменения размера. Вот некоторый sudo-код

frameOrPanel.addComponentListener(new ComponentAdapter() {
   public void componentResized(ComponentEvent componentEvent) {
    element.setLocation(frameOrPanel.getWidth()*1/4, frameOrPanel.getHeight*1/4);
    element.setSize(frameOrPanel.getWidth()*1/2, frameOrPanel.getHeight()*1/2);
   }
});

Вам нужно будет добавить нереализованные методы.

Примечание: 1/4 и 1/2 - это просто соотношение, которое вы можете изменить в соответствии с вашим приложением.

...