Frage

Ich habe also einen Codeabschnitt, der so aussieht ...

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

Wenn ich auf die Schaltfläche klicke, ist dies der Fehler, der erzeugt wird:

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)

Also habe ich den Hörer und die Aktion implementiert, die Ereignisse ausgeführt hat, aber ich verstehe nicht, warum ich den Anruf zu dieser Methode in einer anderen Klasse nicht tätigen kann. Kann jemand erklären, wo ich falsch gehe? Vielen Dank im Voraus für jede Eingabe.

War es hilfreich?

Lösung

Es scheint, dass Sie Java Swing verwenden. Vergessen Sie nicht, "Implements actionListener" am Ende Ihrer Klassensignatur hinzuzufügen.

Versuche dies:

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

}

Andere Tipps

Haben Sie die andere Klasse beim Schwierigen importiert?

import FileConverter;

Überprüfen Sie, ob Sie zu Beginn der Datei so etwas wie haben

 import bla.bla.FileConverter;

Wenn nicht, müssen Sie es hinzufügen und sicherstellen, dass die Implementierung der FileConverter -Klasse auf Klassenpass liegt. Anzeigen Sie ein Glas mit dem Klassenpfad des Projekts, was auch immer Sie verwenden, was Sie verwenden

Was zur Hölle? Eclipse verblüfft mich zum Teufel. Ich habe versucht, hier den Rat aller zu folgen, aber es hat nicht funktioniert. Aber wenn ich mit Sonnenfinsternis neu startete ... funktioniert alles gut.

Seltsam :/

Vielen Dank an alle für den Input, ich schätze es sehr!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top