заменяющие качание компоненты на GridBagLayout - PullRequest
0 голосов
/ 11 мая 2018

Я часами искал ответ, пробовал все известные мне методы и не нашел ответа.Я работаю над затмением, мой класс расширяет JFrame, и я пытаюсь заменить два компонента, которые я добавил в фрейм (используя gridbaglayout).Когда я удаляю первый, я не могу добавить второй туда, где был первый.Компоненты JButton с изображениями.Как мне добавить и удалить компоненты, где я хочу?(уже пытался использовать GridBagConstraints, чтобы добавить его в место, из которого я только что удалил компонент)

Ответы [ 2 ]

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

В качестве обходного пути вы можете добавить на основную панель (используя GridbagLayout) унаследованные панели с кнопками в ней.Затем, когда вы хотите заменить эти кнопки (или любой другой компонент), вы не заменяете их на главной панели.Вы заменяете их в унаследованных панелях.Поскольку вы не даете нам код, вид псевдокода будет выглядеть так:

JButton myBtn = new JButton(); //Theinitial button
JPanel mainPanel = new JPanel(new GridBagLayout()); //main panel
JPanel inheritedPanel = new JPanel(new BorderLayout())//borderlayout to fill the entire panel.
inheritedPanel.add(myBtn,BorderLayout.CENTER);
mainPanel.add(inheritedPanel, myConstraints);

JButton replacementBtn = new JButton;
inheritedPanel.remove(myBtn);
inheritedPanel.add(replacementBtn);
inheritedPanel.repaint();
inheritedPanel.revalidate();
0 голосов
/ 11 мая 2018

Компоненты JButton с изображениями.

Просто замените изображение, используя метод setIcon(...).

...