So rufen Sie die externe Methode in der Java -Taste (GUI) auf
-
26-10-2019 - |
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.
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!