Я пытаюсь создать графический интерфейс JFrame / JPanel для личного проекта, над которым я работаю. Я хочу различать бета-режимы и режимы запуска через два меню, которые помечены бета и кнопкой запуска соответственно. После реализации второго JPanel у меня не было возможности заставить слушателя действия продолжать отвечать на кнопки (после того, как он отобразит новые меню), и при этом я не смог заставить старую панель исчезнуть, я вполне уверен, что Я просто пишу над этим. У меня проблемы с слушателями действий, у которых не должно быть никаких проблем, так как они добавляются, когда я создаю кнопки, и мне не удается найти лучший способ справиться с дубликатами JPanels
Ниже приведены некоторые фрагменты моего кода
Я пытался использовать удаление (панель), добавление новой панели, новой рамки и т. Д.
Когда я перемещаю вызов add в BorderLayout.SOUTH, я вижу, что на новой панели есть мое меню оригинального режима и мои 2 JComboBox, отображаемые по желанию, но мое меню оригинального режима все еще там и больше не работает, когда я нажимаю , Новое меню внизу позволяет мне щелкнуть один раз и напечатать мое утверждение ДВАЖДЫ, прежде чем перестает отвечать.
Если я не нажму кнопку режима BETA и просто нажму кнопку запуска, она будет печататься дважды каждый раз для нижней части, для верхней части она печатается один раз и позволяет мне делать это столько, сколько я хочу.
protected JButton betaModeButton, launchModeButton;
JPanel modePanel;
public View() {
setLayout(new BorderLayout());
setup();
}
public void setup() {
add(modeButtons(), BorderLayout.NORTH);
System.out.println("setup");
}
/**
* choose your mode for testing or implementation
* @return
*/
protected JPanel modeButtons() {
modePanel = new JPanel(new GridLayout(1,2));
betaModeButton = new JButton("BETA");
betaModeButton.setOpaque(true);
betaModeButton.addActionListener(this);
launchModeButton = new JButton("LAUNCH");
launchModeButton.setOpaque(true);
launchModeButton.addActionListener(this);
modePanel.add(betaModeButton);
modePanel.add(launchModeButton);
return modePanel;
}
private JPanel betaMenu() {
System.out.println("Beta Menu should be added");
JPanel comboMenu=new JPanel (new GridLayout(2,1));
JPanel betaMenu=new JPanel(new GridLayout(1,2));
//readd combo buttons
comboMenu.add(modeButtons(), BorderLayout.NORTH);
legShape= new JComboBox();
legShape.addItem("Circle");
legShape.addItem("Square");
legShape.addItem("triangle");
betaMenu.add(legShape);
center= new JComboBox();
"code repeats structure
betaModeButton.addActionListener(this);
launchModeButton.addActionListener(this);
comboMenu.add(betaMenu);
return comboMenu;
}
Мой звонок выполнен
(добавить betaMenu (), BorderLayout.SOUTH);
проверки (); * +1010 *
Кнопки должны распечатываться при каждом нажатии, а верхнее меню должно исчезать