【swing窗口状态监听】想问问怎么在窗口1里监听窗口2的关闭?
窗口2是在窗口1运行过程中由窗口1创建的,现在想着,如果窗口2打开了那么要把窗口1隐藏,或者说如果窗口2关闭了那么要把窗口1重新显示,请问这要怎么做啊?...
窗口2是在窗口1运行过程中由窗口1创建的,现在想着,如果窗口2打开了那么要把窗口1隐藏,或者说如果窗口2关闭了那么要把窗口1重新显示,请问这要怎么做啊?
展开
1个回答
展开全部
窗口1是通过哪个组件打开窗口2的?把窗口1的引用传一个给窗口2。
窗口2显示的时候,设置窗口1的visible属性为false。
关闭窗口2的时候,再把窗口1的visible属性设为true。没试过,应该可以吧。
简单写了一个,你看看:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class tr
{
public static void main(String[]args){
final JFrame f1=new JFrame("Windows 1");
JButton b=new JButton();
f1.setBounds(100,100,200,200);
f1.add(b);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JFrame f2=new JFrame("Windows 2");
f2.setBounds(200,200,200,200);
f2.setVisible(true);
f1.setVisible(false);
f2.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
f1.setVisible(true);
}
});
}
});
f1.setVisible(true);
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
窗口2显示的时候,设置窗口1的visible属性为false。
关闭窗口2的时候,再把窗口1的visible属性设为true。没试过,应该可以吧。
简单写了一个,你看看:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class tr
{
public static void main(String[]args){
final JFrame f1=new JFrame("Windows 1");
JButton b=new JButton();
f1.setBounds(100,100,200,200);
f1.add(b);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JFrame f2=new JFrame("Windows 2");
f2.setBounds(200,200,200,200);
f2.setVisible(true);
f1.setVisible(false);
f2.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
f1.setVisible(true);
}
});
}
});
f1.setVisible(true);
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
追问
窗口1通过其中的一个按钮打开窗口2,另外,你写的这个是点击窗口2的关闭按钮来触发windowevent吧?如果也是通过点击窗口2上的一个按钮使窗口2不可见而窗口1重新可见应该怎么做?这个和关闭窗口的意义一样么?
追答
原理是一样的,只需要在窗口2上添加一个按钮,再为按钮添加监听器,事件的处理过程就是窗口2设置为隐藏,窗口1设置为可见就行了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询