gpt4 book ai didi

java - 如何在 GridLayout 中管理多个菜单?

转载 作者:行者123 更新时间:2023-11-29 04:53:48 24 4
gpt4 key购买 nike

我有 4 个不同的 View ,我希望它们具有不同的 JMenu(因为 loginPanel 根本不存在)。我添加到卡片中的所有 View 都扩展了 JPanel 并将它们添加到卡片中。将 JmenuBar 设置为特定的 JPanel 是不可能的,而只能将 JFrame 设置为特定的 JMenuBar 而我希望每张卡片都有特定的 JMenuBar

public class MainFrame extends JFrame{

public static JPanel cards;
public Controller controller;

public MainFrame() {

cards = new JPanel(new CardLayout());

controller = new Controller();

setJMenuBar(controller.customMenuBar);

cards.add(controller.loginPanel, "login");
cards.add(controller.prisonerAdd, "add");
cards.add(controller.prisonerPanel, "prisoner");
cards.add(controller.searchView, "search");

add(cards);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setExtendedState(JFrame.MAXIMIZED_BOTH);
setVisible(true);
}

这是我初始化 JPanel 并将 actionListeners 添加到 JComponents 的 Controller :

public class Controller {

public UserDatabase db = new UserDatabase();
public LoginPanel loginPanel = new LoginPanel(); // extends JPanel
public CustomMenuBar customMenuBar = new CustomMenuBar(); // extends JMenuBar
public PrisonerAdd prisonerAdd = new PrisonerAdd(); // extends JPanel
public PrisonerController prisonerController = new PrisonerController();
public SearchView searchView = new SearchView(); //extends JPanel
public PrisonerPanel prisonerPanel = new PrisonerPanel(); // extends JPanel

public Controller() {

loginPanel.addLoginListener(new LoginListener());
customMenuBar.addLogoutListener(new LogoutListener());
customMenuBar.addChangeViewListener(new ChangeViewListener());
prisonerAdd.addPrisonerListener(new AddPrisonerListener());
searchView.searchPanel.addSearchPrisonerListener(new SearchPrisonerListener());

}

最佳答案

  1. 为每个面板添加一个 ComponentListener

  2. 处理 componentShown(...) 事件。

  3. 每当显示面板时,您都会更新相关面板的 JMenuBar。

关于java - 如何在 GridLayout 中管理多个菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34483306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com