-2

所以我有这个类:

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

    }
}

这虽然没有做太多的工作。但我希望它将ActionListener 添加到类中的jbutton 中。但我似乎无法让它发挥作用。如果我尝试在课堂之外添加它,它不会给出错误,但似乎也没有做任何事情。我已经尝试过各种各样的东西,比如传入 JFrame ......

对于更多的上下文,这是针对扫雷游戏的。Jframe 也使用 LayeredPane

4

2 回答 2

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

如何使用按钮

于 2013-08-26T16:47:50.340 回答
0

还有更多方法可以做到这一点。

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

于 2013-08-26T16:59:31.877 回答