Как вызвать внешний метод в Java Button (GUI) - PullRequest
1 голос
/ 26 июля 2011

, поэтому у меня есть фрагмент кода, который выглядит следующим образом ...

public IPGUI() {
        setTitle("IP Extractor");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 250, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);

        JPanel panel = new JPanel();
        contentPane.add(panel, BorderLayout.CENTER);
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

        JButton btnConvertDocuments = new JButton("1. Convert Documents");
        btnConvertDocuments.setAlignmentX(Component.CENTER_ALIGNMENT);
        btnConvertDocuments.setMaximumSize(new Dimension(160, 0));
        btnConvertDocuments.setPreferredSize(new Dimension(0, 50));

        panel.add(btnConvertDocuments);
        btnConvertDocuments.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //FileConverter fc = new FileConverter();
                            //Why wont the above method work?
            }
        });

        JSeparator separator_3 = new JSeparator();
        panel.add(separator_3);

Когда я нажимаю на кнопку, возникает ошибка:

Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problems: 
    FileConverter cannot be resolved to a type
    FileConverter cannot be resolved to a type

    at IPGUI$2.actionPerformed(IPGUI.java:60)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Итак, я реализовал прослушиватель и событие выполненного действия, но я не понимаю, почему я не могу вызвать этот метод в другом классе?Может кто-нибудь объяснить, где я иду не так?Заранее благодарю за любой вклад.

Ответы [ 4 ]

2 голосов
/ 26 июля 2011

Похоже, вы используете Java Swing.Не забудьте добавить «реализует ActionListener» в конце подписи вашего класса.

Попробуйте это:

public class IPGUI extends JFrame implements ActionListener {

...

public IPGUI() {
        setTitle("IP Extractor");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 250, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);

        JPanel panel = new JPanel();
        contentPane.add(panel, BorderLayout.CENTER);
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

        JButton btnConvertDocuments = new JButton("1. Convert Documents");
        btnConvertDocuments.setAlignmentX(Component.CENTER_ALIGNMENT);
        btnConvertDocuments.setMaximumSize(new Dimension(160, 0));
        btnConvertDocuments.setPreferredSize(new Dimension(0, 50));

        panel.add(btnConvertDocuments);
        //btnConvertDocuments.addActionListener(new ActionListener() {
        //    public void actionPerformed(ActionEvent e) {
        //        //FileConverter fc = new FileConverter();
        //                    //Why wont the above method work?
        //    }
        //});

        btnConvertDocuments.setActionCommand("x");
        btnConvertDocuments.addActionListener(this);

        JSeparator separator_3 = new JSeparator();
        panel.add(separator_3);
}

public void actionPerformed(ActionEvent event) {
    String command = event.getActionCommand();
    if (command.equals("x")) {
        //FileConverter fc = new FileConverter();
    }
}
...

}
1 голос
/ 26 июля 2011

проверьте, есть ли в начале файла что-то вроде

 import bla.bla.FileConverter;

если нет, вам нужно добавить его и убедиться, что реализация класса FileConverter находится на проходе класса добавьте банку в classpath проекта, какую IDE вы используете

1 голос
/ 26 июля 2011

Вы импортировали другой класс в начале?

import FileConverter;
0 голосов
/ 26 июля 2011

Какого черта?Затмение выводит меня из себя.Я пытался следовать всем советам здесь, но это не сработало.Но когда я перезагружаю затмение ... все работает отлично.

Странно: /

Спасибо всем за ввод, я действительно ценю это!

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