【问题标题】:Java Swing - Display table in sub menuJava Swing - 在子菜单中显示表格
【发布时间】:2010-09-27 22:45:05
【问题描述】:

我有一个显示说的菜单

  • 项目1
  • 项目2
  • 项目3

等等。单击 Item1 应该会显示一个包含 2 列的表格。

我尝试了以下仅显示标签的方法。但是标签会显示在屏幕中的某个位置,正如我所期望的那样,它是 menuitem1 下的子菜单。

JMenu mainMenu = new JMenu("MainMenuHeader");

JMenu menuItem1 = new JMenu(new SomeClassExtendingAbstractAction("menuItem1"));

公共类 SomeClassExtendingAbstractAction 扩展 AbstractAction {

public SomeClassExtendingAbstractAction(String displayText) {
    super(displayText);
}

public void actionPerformed(ActionEvent event) {
    try {
        SubMenuDialog.showDialog(parent);
    } catch (Throwable e) {

    }
}

}

公共类 SubMenuDialog 扩展 JDialog {

 public SubMenuDialog(JFrame parent) {
   super();
   initialize();
 }

private void initialize() {
    JLabel label = new JLabel();
    label.setText("This is test submenu");
    getContentPane().add(label);
}

public static void showDialog(JFrame parent) {
    SubMenuDialog subMenuDialog = new SubMenuDialog(parent);
    subMenuDialog.pack();
    subMenuDialog.setVisible(true);
}

}

【问题讨论】:

    标签: swing


    【解决方案1】:

    如果我理解正确,您要做的是在子菜单弹出窗口中显示任意组件。你显然不能使用JDialog,因为它会给你一个JDialog

    您的SubMenuDialog#showDialog 可以创建JPopupMenu,向其中添加任何组件(例如包含表格的JScrollPane,或带有标签的JPanel),并将其显示在正常子菜单所在的位置。

    但是,一般来说,在弹出窗口中显示复杂的东西并不是一个好主意,因为太容易丢失弹出窗口,而且您可能会遇到弹出窗口内的组件的焦点问题。

    我建议您咨询 UI 设计师,以获得您想要实现的功能的最佳 UI 表示。

    【讨论】:

    • 我希望我的子菜单类似于浏览器的视图 - 工具栏 - 标准工具栏/导航工具栏等。在这种情况下我还能使用 JPopupMenu 吗?
    • 哪个浏览器?我在 Firefox 3.6、IE 8 或 Chrome 6 中看不到这种组合。Firefox 视图 - 工具栏只显示一堆复选框菜单项,这就是 JCheckBoxMenuItem 的用途。
    • 是的。我希望我的看起来像没有复选框的查看工具栏。相反,我希望它是一个 JTable。我尝试使用 JMenuItem 而不是 Action/Jdialog。无法弄清楚如何将 Jtable 添加到 JMenuItem
    猜你喜欢
    • 2011-08-27
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多