我遇到了一个问题,因为我对 GUI 相对较新。
基本上把每个人都放在图片中,我有一个包含以下内容的包:
MainClass
(包括GUI)所以我的MainClass
GUI基本上就是控制器。
然而,老实说,我不知道如何去做。被告知必须创建构造函数并使用getter / setter?但是,我仍然不明白如何打电话给那个特定的课程而离开另一个“关闭”。
感谢。
答案 0 :(得分:4)
嗯,有很多方法可以做到这一点......要么为每个按钮创建一个匿名侦听器,然后根据你想要做的事情,触发其他类中的方法等;
JButton b1 = new JButton();
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
//Do something!
OtherClass other = new OtherClass();
other.myMethod();
}
});
JButton b2 = new JButton();
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
//Do something else!
...
}
});
或者,您使用命令字符串并关联您在公共侦听器实现中接收actionPerformed时所比较的唯一命令(最终,最终);
//In your class, somewhere...
public final static String CMD_PRESSED_B1 = "CMD_PRESSED_B1";
public final static String CMD_PRESSED_B2 = "CMD_PRESSED_B2";
//Create buttons
JButton b1 = new JButton();
JButton b2 = new JButton();
//Assign listeners, in this case "this", but it could be any instance implementing ActionListener, since the CMDs above are declared public static
b1.addActionListener(this);
b2.addActionListener(this);
//Assign the unique commands...
b1.setActionCommand(CMD_PRESSED_B1);
b2.setActionCommand(CMD_PRESSED_B2);
然后,在你的监听器实现中;
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand().equals(CMD_PRESSED_B1)
{
//Do something!
OtherClass other = new OtherClass();
other.myMethod();
}
else if (e.getActionCommand().equals(CMD_PRESSED_B2)
{
//Do something else!
...
}
}