我有一个菜单显示说
等。单击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);
}
}
答案 0 :(得分:1)
如果我理解正确,你想要做的是在子菜单弹出窗口中显示任意组件。您显然无法使用JDialog
,因为它会为您提供JDialog
。
您的SubMenuDialog#showDialog
可以创建JPopupMenu
,向其添加任何组件(例如JScrollPane
包含表格,或JPanel
包含标签),并将其显示在正常的子菜单会是。
然而,在弹出窗口中显示复杂的东西通常不是一个好主意,因为丢失弹出窗口太容易了,而且弹出窗口内的组件可能会出现焦点问题。
我建议你咨询一下UI设计师,以获得你想要实现的功能的最佳UI表示。