java - 通过单击 JMenuBar 打开新容器?

标签 java swing jmenu jmenubar

我创建了一个包含 JMenuBar 的窗口,当我单击 JMenuBar 中的菜单时,我想打开另一个容器(通过调用一个新类来分隔每个容器按类别)。但我不知道该怎么做。

实际上我重置了当前容器并在上面添加了项目...

public void mousePressed(MouseEvent arg0) 
{
  if(arg0.getSource()==login)
  { 
    cont.removeAll();
    MenuLogin menu= new MenuLogin();
    cont.add(menu);
    cont.repaint();
    Window.this.setVisible(true);
  }
}

但这不是我想要的

最佳答案

"I want to open another container when I click on a menu from my JMenuBar"

  1. 不要将 MouseListener 用于 JMenu。要么使用 MenuListener或者只是将 JMenuItem 添加到 JMenu 并为其使用 ActionListener

  2. 当您想要向容器中删除和添加组件时,您需要使用 revalidate() 以及 repaint()。首先重新验证。

  3. 不要删除所有面板并添加新面板,而是考虑使用 CardLayout,它允许您交换 View 。查看更多How to Use CardLayout

<小时/>

查看更多信息 How to Use Menus

关于java - 通过单击 JMenuBar 打开新容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22593902/

相关文章:

java - JMenuitem - 单击 - 操作 - Java

Java Base64 编码和解码

java - 在Eclipse中添加分支

java - kafka-log4j-appender 0.9 不工作

java - 当组件添加到 JAVA 的单独线程中时,如何立即重绘容器?

java - 如何防止 JMenuItem 在单击 JMenuItem 时关闭菜单

java - 如何更改 JMenuBar 中 JMenus 的方向

java - 使用 Jackson 将字符串转换为对象

java - 如果 Swing View 是由 Controller 中的新线程设置的,那么它是否需要同步方法

java - 在 JComboBox 中显示时区