所以我有这个课程:
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
答案 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。
查看这些资源以获取更多信息:
答案 1 :(得分:0)
还有更多方法可以做到。
我建议你在第4页和第5-6页看到http://www.cs.columbia.edu/~bert/courses/1007/slides/Lecture6.pdf 这是两个可以解释你如何做的例子