В настоящее время я пытаюсь создать графический интерфейс с меню, в котором есть 2 варианта, которые вы можете выбрать. Один из них - «Настройки по умолчанию», а один - «Пользовательские настройки». Когда вы нажмете на одну из них, вы перейдете к новой jPanel, которая отобразит соответствующие окна, текстовые поля и т. Д. Для этой панели. Однако я не могу заставить действие mouseClicked фактически переключаться между панелями. В качестве теста у меня есть простая jLabel на каждой панели, где указано «Default» для панели по умолчанию и «custom» для пользовательской панели, и каждый элемент меню, при нажатии соответственно, должен переключаться между ними. Вот мой текущий код:Java JmenuItem что-то делать, когда не работает
frmLegitServerAdder = new JFrame();
frmLegitServerAdder.setTitle("Legit Server Adder 5 Million");
frmLegitServerAdder.setBounds(100, 100, 546, 468);
frmLegitServerAdder.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();
frmLegitServerAdder.setJMenuBar(menuBar);
JMenu mnNewMenu = new JMenu("Settings");
menuBar.add(mnNewMenu);
JMenuItem menuItemDefaultSettings = new JMenuItem("Default Settings");
mnNewMenu.add(menuItemDefaultSettings);
JMenuItem menuItemCustomSettings = new JMenuItem("Custom Logon Settings");
mnNewMenu.add(menuItemCustomSettings);
frmLegitServerAdder.getContentPane().setLayout(new CardLayout(0, 0));
final JPanel defaultSettingsPanel = new JPanel();
frmLegitServerAdder.getContentPane().add(defaultSettingsPanel, "name_416522810155567");
defaultSettingsPanel.setLayout(null);
JLabel lblDefaultArea = new JLabel("Default Area");
lblDefaultArea.setBounds(217, 11, 90, 14);
defaultSettingsPanel.add(lblDefaultArea);
final JPanel customSettingsPanel = new JPanel();
frmLegitServerAdder.getContentPane().add(customSettingsPanel, "name_416549691176064");
customSettingsPanel.setLayout(null);
JLabel lblCustomArea = new JLabel("Custom Area");
lblCustomArea.setBounds(235, 21, 46, 14);
customSettingsPanel.add(lblCustomArea);
menuItemDefaultSettings.addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent e)
{
defaultSettingsPanel.setVisible(true);
customSettingsPanel.setVisible(false);
}
});
menuItemCustomSettings.addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent e)
{
defaultSettingsPanel.setVisible(false);
customSettingsPanel.setVisible(true);
}
});
Трасса код и графический интерфейс отображает только штраф, но ничего на самом деле не происходит, когда я нажимаю на либо пунктах меню, как это должно быть. Есть идеи?
Спасибо! это сработало. Целесообразно ли всегда просто использовать ActionListeners вместо конкретных слушателей в вашем коде? – user1806716
Это зависит от вашего варианта использования. –