Как перекрасить все JPanels при изменении размера? - PullRequest
0 голосов
/ 15 ноября 2018

У меня в настоящее время есть 2 JPanels, добавляемых к JFrame.При изменении размера окна, только самый последний добавленный JPanel изменяется.Как я могу гарантировать, что все JPanels изменят размер?В моей программе я запускаю фейерверк, и у меня есть линии сетки.Я хочу, чтобы каждый обнимал нижнюю часть экрана.

С этим кодом, запущенный фейерверк изменяет размеры, чтобы обнять, но линии сетки не:

JFrame frame = new JFrame();
frame.setSize(950,800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

GuiTest test = new GuiTest();
frame.add(test, BorderLayout.PAGE_END);
frame.setVisible(true);

Grid grid = new Grid();
frame.add(grid);
frame.setVisible(true);

FireworkP canvas = new FireworkP(150, 45, 7, 2);
frame.add(canvas);
frame.setVisible(true);
frame.getContentPane().setBackground(Color.BLACK);
frame.setVisible(true);

С этим кодом происходит обратное:

JFrame frame = new JFrame();
frame.setSize(950,800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

GuiTest test = new GuiTest();
frame.add(test, BorderLayout.PAGE_END);
frame.setVisible(true);

FireworkP canvas = new FireworkP(150, 45, 7, 2);
frame.add(canvas);
frame.setVisible(true);
frame.getContentPane().setBackground(Color.BLACK);
frame.setVisible(true);

Grid grid = new Grid();
frame.add(grid);
frame.setVisible(true);

По умолчаниюсостояние: https://i.imgur.com/cpzpBha.png

Изменение размера кода 1: https://i.imgur.com/SRdh2oA.png

Изменение размера кода 2: https://i.imgur.com/VHY4Ff1.png

1 Ответ

0 голосов
/ 15 ноября 2018

Так есть ли способ иметь отдельный класс линий сетки или я должен просто объединить их?

Вы строите отношения родитель / ребенок.

Итак, вылогика будет выглядеть примерно так:

FireworkP foreground = new FireworkP(150, 45, 7, 2);
foreground.setOpaque( false );

Grid background = new Grid();
background.add(foreground);

frame.add(background);
frame.setVisible(true);

Вышеприведенное предполагает, что:

  1. ваши классы FireworkP и Grid - это JPanels, где вы выполняете пользовательскую рисование.
  2. ваши классы используют соответствующий менеджер компоновки

Так что теперь у вас графический интерфейс имеет такую ​​структуру:

- frame
    - background
        - foreground

Итак, у вас есть компоненты, которые могут рисовать себя сверхудруг друга на оси Z.

Если вы добавите более одного компонента на одну панель, то компоненты будут окрашены на оси X / Y

...