Модуль Netbeans: открыть JFrame по нажатию кнопки - PullRequest
0 голосов
/ 25 апреля 2018

Я кодирую модуль для Netbeans, где у меня есть кнопка, при нажатии которой открывается JFrame.

Это класс прослушивателя действий кнопки:

// ... (package and imports)

@ActionID(
        category = "File",
        id = "org.myorg.readabilitychecker.ReadabilityActionListener"
)
@ActionRegistration(
        iconBase = "org/myorg/readabilitychecker/google.png",
        displayName = "#CTL_ReadabilityActionListener"
)
@ActionReference(path = "Toolbars/File", position = 0)
@Messages("CTL_ReadabilityActionListener=Readability")
public final class ReadabilityActionListener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        JFrame readabilityFrame = new ReadabilityFrame();
        readabilityFrame.setVisible(true);
    }
}

ВJFrame У меня в основном есть:

public static void main(String args[]) {
* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ReadabilityFrame().setVisible(true);
            }
        });
    }

У него также есть какой-то другой автоматически сгенерированный код, но ничего важного.

Когда я запускаю приложение, кнопка появляется на панели инструментов, но когда я нажимаюэто, JFrame не открывается.

Я попытался проверить, будет ли вывод в методе actionPerformed() показываться на выходном терминале, и это происходит, поэтому я предполагаю, что я что-то упускаю при вызове JFrame.

Может кто-нибудь подсказать мне, где проблема?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Я нашел, где была проблема.

У автоматически сгенерированного метода initComponents () была строка setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);, и он всегда выдавал исключение.

Я просто изменил EXIT_ON_CLOSE наDISPOSE_ON_CLOSE, определила фрейм по-другому, и теперь проблема исчезла.

0 голосов
/ 25 апреля 2018

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

 ReadabilityFrame readabilityFrame = new ReadabilityFrame();
 readabilityFrame.setVisible(true);

Надеюсь, это поможет.

...