Java ActionListener错误:不兼容的类型
我在JButton上设置ActionListener时遇到一些问题,下面是代码Java ActionListener错误:不兼容的类型,java,swing,jbutton,actionlistener,Java,Swing,Jbutton,Actionlistener,我在JButton上设置ActionListener时遇到一些问题,下面是代码 package pipes; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PipesUI extends javax.swing.JFrame { Main main = new Main(); JButton addPipeButton = new JButton("Add Pi
package pipes;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PipesUI extends javax.swing.JFrame {
Main main = new Main();
JButton addPipeButton = new JButton("Add Pipe");
public PipesUI(){
addUI();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void addUI(){
addPipeButton.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if (e.getSource()==addPipeButton)
main.addPipe();
else
;
}
public static void main(String args[]) {
PipesUI pipesUI = new PipesUI(); // create an instance of the menu
pipesUI.setSize(500,500);
pipesUI.setVisible(true);
}
}
错误在线路上
addPipeButton.addActionListener(此)
(这)它似乎不喜欢,错误是“不兼容的类型:PipesUI无法转换为ActionListener”
任何帮助都很好,谢谢 您创建了
actionPerformed
方法,但没有将类声明为ActionListener
。实现该接口:
public class PipesUI extends javax.swing.JFrame implements ActionListener {
您创建了
actionPerformed
方法,但没有将类声明为ActionListener
。实现该接口:
public class PipesUI extends javax.swing.JFrame implements ActionListener {
我猜您在另一个地方看到了
addActionListener(这个)
,并决定在这里使用它。另一个地方是一个完全不同的环境,因为这个
是ActionListner的一个实例
按以下步骤进行:
addPipeButton.addActionListener(new ActionListner(){
public void actionPerformed(ActionEvent e){
//handle `e`
}
});
public class PipesUI extends javax.swing.JFrame implements ActionListener
{
//your code
@Override
public void actionPerformed(ActionEvent e) {
// your code
}
}
编辑:类中已经有ActionListener
方法。在这种情况下,您可以使用:
public class PipesUI extends javax.swing.JFrame implements ActionListener {
我猜您在另一个地方看到了
addActionListener(这个)
,并决定在这里使用它。另一个地方是一个完全不同的环境,因为这个
是ActionListner的一个实例
按以下步骤进行:
addPipeButton.addActionListener(new ActionListner(){
public void actionPerformed(ActionEvent e){
//handle `e`
}
});
public class PipesUI extends javax.swing.JFrame implements ActionListener
{
//your code
@Override
public void actionPerformed(ActionEvent e) {
// your code
}
}
编辑:类中已经有ActionListener
方法。在这种情况下,您可以使用:
public class PipesUI extends javax.swing.JFrame implements ActionListener {
一种可能的解决办法:
public class PipesUI extends javax.swing.JFrame implements ActionListener{
//implement the relevant methods
另一个:
private void addUI(){
addPipeButton.addActionListener(new ActionListener(){
//anonymous actionlistener implementation
};
}
等等等等 一种可能的解决方案:
public class PipesUI extends javax.swing.JFrame implements ActionListener{
//implement the relevant methods
addPipeButton.addActionListener(this);
另一个:
private void addUI(){
addPipeButton.addActionListener(new ActionListener(){
//anonymous actionlistener implementation
};
}
等等等等
addPipeButton.addActionListener(this);
在实例方法或构造函数中,此
是对当前对象的引用,即调用其方法或构造函数的对象。因此,addActionListener(ActionListener)
方法需要一个接口ActionListener
的实现实例。当您将此
传递给addActionListener
函数时,该函数当前引用的是PipesUI的实例。
未使用ActionListener
实现
执行ActionListener
,如下所示:
addPipeButton.addActionListener(new ActionListner(){
public void actionPerformed(ActionEvent e){
//handle `e`
}
});
public class PipesUI extends javax.swing.JFrame implements ActionListener
{
//your code
@Override
public void actionPerformed(ActionEvent e) {
// your code
}
}
但是从您的代码中,我看不到您已将addPipeButton
添加到任何容器中。只需使用add(addPipeButton)
将按钮添加到您的框架中,如下所示:
private void addUI(){
add(addPipeButton); <--- adding pipe button
addPipeButton.addActionListener(this);
}
private void addUI(){
添加(添加管道按钮);
在实例方法或构造函数中,此
是对当前对象的引用,即调用其方法或构造函数的对象。因此,addActionListener(ActionListener)
方法需要一个接口ActionListener
的已实现实例。当您将此
传递给addActionListener
函数时,该函数当前引用的是的实例,但未使用ActionListener
实现
执行ActionListener
,如下所示:
addPipeButton.addActionListener(new ActionListner(){
public void actionPerformed(ActionEvent e){
//handle `e`
}
});
public class PipesUI extends javax.swing.JFrame implements ActionListener
{
//your code
@Override
public void actionPerformed(ActionEvent e) {
// your code
}
}
但是从您的代码中,我看不到您已将addPipeButton
添加到任何容器中。只需使用add(addPipeButton)
将按钮添加到框架PipesUI
,如下所示:
private void addUI(){
add(addPipeButton); <--- adding pipe button
addPipeButton.addActionListener(this);
}
private void addUI(){
add(addPipeButton);这是什么
?那是什么类型的引用?@SotiriosDelimanolis我真的不知道…这是我第一次使用actionlisteners,我看到了“这”以前写在那些括号里,所以我只是用了它们,括号里应该放什么?我的JFrame上也没有出现按钮,是什么造成的?这是什么<代码>这<代码>?那是什么类型的引用?@SotiriosDelimanolis我真的不知道…这是我第一次使用actionlisteners,我看到了“这”以前写在这些括号中,所以我只是使用了它们,括号中应该放什么?我的JFrame上也没有出现按钮,是什么原因造成的?谢谢,这解决了错误,但我的按钮仍然没有显示在JFrame上,为什么会这样?我不知道你在哪里将JButton
添加到你的JFrame
。这非常有用再次anks!谢谢,这解决了错误,但我的按钮仍然没有显示在JFrame上,这是为什么?我不知道您在哪里将JButton
添加到了您的JFrame
。这非常有帮助!再次感谢!