Java Swing - Показать таблицу в подменю - PullRequest
0 голосов
/ 27 сентября 2010

У меня есть меню, которое показывает:

  • Item1
  • Item2
  • Item3

и т. Д.Нажатие на Item1 должно отобразить таблицу с 2 столбцами.

Я попробовал кое-что ниже с отображением только метки.Но метка отображается где-то на экране, где, как я ожидаю, это будет подменю под menuitemm1.

JMenu mainMenu = новый JMenu ("MainMenuHeader");

JMenu menuItem1 = новый JMenu (новый SomeClassExtendingAbstractAction ("menuItem1"));

публичный класс SomeClassctionstraben

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

}

1 Ответ

1 голос
/ 27 сентября 2010

Если я правильно понимаю, вам нужно показать произвольный компонент во всплывающем подменю.Вы, очевидно, не можете использовать JDialog, поскольку это даст, вы знаете, JDialog.

Ваш SubMenuDialog#showDialog может создать JPopupMenu, добавить в него любой компонент (например, JScrollPane, содержащийтаблицу (или JPanel с метками) и покажите, где будет нормальное подменю.

Однако в целом показывать сложные вещи во всплывающем окне не очень хорошая идея, поскольку потерять слишком легковсплывающее окно, плюс у вас могут возникнуть проблемы с фокусировкой компонентов внутри всплывающего окна.

Я бы посоветовал вам проконсультироваться с дизайнером пользовательского интерфейса для лучшего представления пользовательского интерфейса той функциональности, которую вы хотите реализовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...