Java - 似乎无法将addActionListener添加到包含JButton的类中

时间:2013-08-26 16:43:26

标签: java swing jbutton

所以我有这个课程:

class Button extends JButton
{
    private int x;
    private int y;
    public Button(int x,int y, int size, JLayeredPane pane )
    {

        JButton b = new JButton();
        pane.add(b, new Integer(0));
        b.setBounds(x,y,size,size);

    }
}

这虽然没有做太多全部工作。但我希望它将addActionListener添加到类中的jbutton。但我似乎无法让这个工作。如果我尝试在课外添加它不会给出错误,但似乎也没有做任何事情。我尝试了各种各样的东西,比如传递JFrame ......

对于更多背景,这是一个扫雷游戏。 Jframe也使用了LayeredPane

2 个答案:

答案 0 :(得分:1)

构造

public Button(int x,int y, int size, JLayeredPane pane )
{
  //The whole premise of have a constructor that declares a JButton inside
  //a JButton doesn't really make any sense, but:
  super();

  JButton b = new JButton();
  pane.add(b, new Integer(0));
  b.setBounds(x,y,size,size);

  b.addActionListener( new ActionListener(){ 

    public void actionPerformed(ActionEvent e){
      System.out.println("Button Clicked");
    }
  }
}

这只是在你的Buttons构造函数中声明一个新的JButton。

说过你看起来好像不懂你编写的代码是如何工作的。当您扩展JButton时,您将通过继承获取其所有方法。 public Button()是你的Button类的构造函数,你不需要在其中声明一个JButton,Button已经是一个JButton。您需要做的是,在另一个类中,执行Button b = new Button();之类的操作,然后在按钮上声明您的actionlistener。

查看这些资源以获取更多信息:

JButton api

How to use buttons

答案 1 :(得分:0)

还有更多方法可以做到。

我建议你在第4页和第5-6页看到http://www.cs.columbia.edu/~bert/courses/1007/slides/Lecture6.pdf 这是两个可以解释你如何做的例子