因为我用JFrame创建窗口的类,和JButton监听事件处理的类不在同一个类,无法使用this.dispose()
所以请问一下,跨类如何使用dispose()或者setVisible(false)关闭前一个窗口?
具体代码如下:
public class enterWindow extends JFrame {
enterWindow(String title){
super(title);
//窗口组件代码
.........
JButton enterButton = new JButton( "登陆 ");
buttonPanel.add(enterButton);
enterButton.addActionListener(
new Command(Command.button_enter));
.........
setVisible(true);
}
}
class Command implements ActionListener {
static final int button_enter = 9;
Command(int button){
curButton = button;
}
public void actionPerformed(ActionEvent e){
switch(curButton){
case button_enter:
funtionWindow fWindow = new funtionWindow( ".. ");
break;
}
}
}
过程就是点击“登陆”按钮,创建一个新的窗口!请问如何关闭前面的登陆窗口?(“登陆窗口”和“事件处理”是两个分开了类~)
谢谢!
------解决方案--------------------
.........
JButton enterButton = new JButton( "登陆 ");
buttonPanel.add(enterButton);
enterButton.addActionListener(
new Command(Command.button_enter,this));//修改构造函数
.........
class Command implements ActionListener {
static final int button_enter = 9;
JFrame jFrame;
Command(int button,JFrame jFrame){
curButton = button;
this.jFrame = jFrame;
}
public void actionPerformed(ActionEvent e){
switch(curButton){
case button_enter:
jFrame.dispose(); //关闭
funtionWindow fWindow = new funtionWindow( ".. ");
break;
}
}
}