Java-программа с графическим интерфейсом, нуждающаяся в кнопке события действия - PullRequest
3 голосов
/ 17 августа 2011

Я делаю простую программу Java, которая представляет строку меню Microsoft Word, и в меню файлов я добавляю кнопку выхода ... она ничего не делает.

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

Вот мой код:

public class MicrosoftWordMenu {
        public static void main(String [] args)
        {
        JPanel panel = new JPanel();
        JFrame frame = new JFrame("Microsoft Word");
        JMenuBar bar = new JMenuBar();
        JMenu menu = new JMenu("File");
        JMenu menu1 = new JMenu("Edit");
        JMenu menu2 = new JMenu("View");
        JMenu menu3 = new JMenu("Insert");
        JMenu menu4 = new JMenu("Format");
        JMenu menu5 = new JMenu("Tools");
        JMenu menu6 = new JMenu("Table");
        JMenu menu7 = new JMenu("Window");
        JMenu menu8 = new JMenu("Help");

        frame.add(bar, BorderLayout.NORTH);
        frame.add(panel);

        bar.add(menu);
        bar.add(menu1);
        bar.add(menu2);
        bar.add(menu3);
        bar.add(menu4);
        bar.add(menu5);
        bar.add(menu6);
        bar.add(menu7);
        bar.add(menu8);

        JMenuItem menuitem = new JMenuItem("New...");
        JMenuItem menuitem1 = new JMenuItem("Open...");
        JMenuItem menuitem2 = new JMenuItem("Close");
        JMenuItem menuitem3 = new JMenuItem("Save");
        JMenuItem menuitem4 = new JMenuItem("Save as...");
        JMenuItem menuitem5 = new JMenuItem("Save as web page...");
        JMenuItem menuitem6 = new JMenuItem("Web page preview ");
        JMenuItem menuitem7 = new JMenuItem("Print ");
        JMenuItem menuitem8 = new JMenuItem("Exit");

        menu.add(menuitem);
        menu.add(menuitem1);
        menu.add(menuitem2);
        menu.add(menuitem3);
        menu.add(menuitem4);
        menu.add(menuitem5);
        menu.add(menuitem6);
        menu.add(menuitem7);
        menu.add(menuitem8);

        frame.setSize(600,100);
        frame.setVisible(true);
        }

}

Ответы [ 5 ]

4 голосов
/ 17 августа 2011

Также рассмотрите возможность использования Action, чтобы позволить компонентам совместно использовать функциональность, как показано здесь .

3 голосов
/ 17 августа 2011

Вызов System.exit(0) при выборе меню вполне подойдет.

2 голосов
/ 18 августа 2011

Используйте ExitAction, определенный в Закрытие приложения .Тогда нажатие на пункт меню Exit будет аналогично нажатию на значок «Закрыть» в правом верхнем углу окна.Это обеспечивает согласованность при закрытии приложения в случае, если вам когда-либо понадобится выполнить закрытую обработку.

Редактировать:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
...
// JMenuItem menuitem8 = new JMenuItem("Exit");
JMenuItem menuitem8 = new JMenuItem( new ExitAction() );
2 голосов
/ 17 августа 2011

Я всегда расширяю класс AbstractAction (который реализует интерфейс ActionListener), который позволяет вам повторно использовать ваши действия.Расширяя AbstractAction, метод actionPerformed (ActionEvent e) будет вызываться при каждом нажатии вашей кнопки.

public class CloseAction extends AbstractAction {

  public CloseAction() {
    super("Close");
  }

  public actionPerformed(ActionEvent e) {
    System.exit(1);  
  }

}

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

CloseButton.setAction (new CloseAction ());

Кнопка закрытия теперь будет закрывать ваше приложение при каждом нажатии.

2 голосов
/ 17 августа 2011

В данный момент вы просто создаете элемент GUI, но в основном это пустые оболочки. В частности, вы создали элементы, которые появляются в меню, но вы не добавили никакого поведения к этим элементам . (Поскольку вы нигде не указали своей программе, что делать при нажатии на элемент, что, по вашему мнению, произойдет)?

Чтобы обеспечить такое поведение, вам нужно зарегистрировать ActionListener, который будет вызываться, когда что-то произойдет с элементом, и позволит вам предпринять соответствующее действие в этой точке ( например, вызов System.exit(0). Подробнее см. учебник по Написание [Swing] прослушивателей событий .

...