Java Swing - 子菜单中的显示表

时间:2010-09-27 02:38:09

标签: swing

我有一个菜单显示说

  • 项目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) {

    }
}

}

public class 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);
}

}

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你想要做的是在子菜单弹出窗口中显示任意组件。您显然无法使用JDialog,因为它会为您提供JDialog

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

然而,在弹出窗口中显示复杂的东西通常不是一个好主意,因为丢失弹出窗口太容易了,而且弹出窗口内的组件可能会出现焦点问题。

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