Добавить другой ActionListener для анонимно ссылающихся JButtons в JToolBar

Я пытаюсь добавить четыре JButton в JToolBar, каждый с различным ActionListener.

Мне интересно, есть ли способ добавить ActionListener к анонимно ссылающейся JButton, или мне нужно специально определить каждую кнопку и добавить каждого слушателя.

В настоящее время этот код выглядит так:

JToolBar tools = new JToolBar();
tools.setFloatable(false);
gui.add(tools, BorderLayout.PAGE_START);// adds tools to JPanel gui made in another method

// add buttons to toolbar
tools.add(new JButton("New"));
tools.add(new JButton("Save"));
tools.add(new JButton("Restore"));
tools.addSeparator();
tools.add(new JButton("Quit"));

Мне было интересно, есть ли способ добавить ActionListener в tools.add(new JButton("foo")); линия так же, как Thread t = new FooRunnableClass().start(); или если мне нужно будет определить каждую кнопку, добавьте ActionListener к каждой кнопке, а затем добавьте каждую кнопку в инструменты.

1 ответ

Решение

Вы могли бы определить addButtonToToolbar способ помочь вам (при условии, что вы используете Java 8 или новее):

JToolBar tools = new JToolBar();
tools.setFloatable(false);
// adds tools to JPanel gui made in another method
gui.add(tools, BorderLayout.PAGE_START);

addButtonToToolbar(tools, "New", e -> System.out.println("Pressed New"));
addButtonToToolbar(tools, "Save", e -> System.out.println("Pressed Save"));
addButtonToToolbar(tools, "Restore", e -> System.out.println("Pressed Restore"));
tools.addSeparator();
addButtonToToolbar(tools, "Quit", e -> System.out.println("Pressed Quit"));


private void addButtonToToolbar(final JToolBar toolBar, final String buttonText,
                                final ActionListener actionListener) {
    final JButton button = new JButton(buttonText);
    button.addActionListener(actionListener);
    toolBar.add(button);
}
Другие вопросы по тегам