java怎么使JFrame的子窗口不被重复打开?

Python023

java怎么使JFrame的子窗口不被重复打开?,第1张

加个全局变量,比如一个HashMap,

key=子窗体的名字,value=子窗体的实例

在打开子窗口的事件前判断HashMap里是否有这个子窗体的名字,有则不去再实例化,而是从HashMap中得到该子窗体的实例,再让他置前/显示。

同时,子窗体销毁事件中,也要将自己从HashMap中对应删除remove.

public static void main(String[] args) throws Exception {

JFrame frame = new JFrame("swing test")

frame.setSize(300, 200)

frame.setLayout(null)

JButton btnNewFrame = new JButton("新窗口")

btnNewFrame.setBounds(30, 30, 80, 40)

frame.getContentPane().add(btnNewFrame)

frame.setVisible(true)

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)//关闭时,直接退出

btnNewFrame.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO 自动生成

final JFrame frame = new JFrame("new frame")

frame.setSize(200, 180)

frame.getContentPane().add(new JLabel("this is a new frame"))

frame.setVisible(true)

frame.addWindowListener(new WindowAdapter() {

@Override

public void windowClosed(WindowEvent e) {

// TODO 自动生成

frame.dispose()//dispose会隐藏窗体并释放窗体所占用的部分资源

}

})

}

})

}

二楼的方法不错,但是楼主可能不懂.最简单的方法就是如果你的子窗口类名是SonFrame在SonFrame中添加一属性

public

static

boolean

isshow=false把显示窗口的语句套在if里边if(SonFrame.isshow==false){

//执行显示窗口代码}else{

//不管}但是记得当子窗口关闭后设置属性

SonFrame.isshow=false否则嘿嘿,再按打开就显示不出来了~!