Java swing关闭父界面,或者多个界面的解决办法
转载请注明出处!
最近公司在用swing 写一个客户端。我在写的时候,遇到我从上上个界面跳转到本界面,而要关闭之前的界面!
简单来说 ,A,B,C三个界面,A-->B-->C, 在开启C界面的时候,关闭A,B界面。类似的问题,均可以使用本方法。
解决思路:
1. 将A的当前对象,当作参数传递给C
2.C 定义一个成员变量接受A对象
3. 通过C拿到的A传过来的对象关闭A。
示例:
Class A extends JFrame implements ActionListener{
private JButton button;
..... //省略部分代码
// 重点来了 : 监听一个按钮,当用户点击A,跳转到B,点击B的按钮又调转到C。现在要在C中关闭AB
@Overridepublic void actionPerformed(ActionEvent e) {
if(e.getSource( ) == button) {
new B(this) ; // new B(A a) 跳转到B界面,并将A的对象传递给B
}
}
Class B extends JFrame implements ActionListener{
private JButton button;
private A a; // 定义成员变量,A的对象的引用
// B的构造方法
public B(A a){
this.a = a; // 将对象传递给 a
}
public void actionPerformed(ActionEvent e) {
if(e.getSource( ) == button) {
dispose(); // 关闭B
new C( a );// 将对象传递给C
}
}
Class C extends JFrame implements ActonListener{
private A a;
public C (A a){
this.a = a; // 拿到A的对象
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource( ) == button) {
// 关闭A 这样就是先了 关闭多个面板
a.dispose();
}
}
这里只是提供给大家一个思路,关闭其他界面也可以使用。 传递对象的引用是java中常用手法。