作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 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());
}
最佳答案
为每个面板添加一个 ComponentListener
。
处理 componentShown(...)
事件。
每当显示面板时,您都会更新相关面板的 JMenuBar。
关于java - 如何在 GridLayout 中管理多个菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34483306/
我是一名优秀的程序员,十分优秀!