Java窗口弹出问题

时间:2016-01-06 11:25:40

标签: java popup jframe

代码的工作原理如下:

输入数字时,将对img1进行一些修改,弹出修改后的img1。然后输入另一个数字,将弹出新修改的img1。

问题是当新修改的img1弹出时,旧的不会关闭。所以输入5个数字后,将会有5个窗口打开。

如何修改代码,以便在出现新窗口时,旧窗口会关闭?

while(true){
    System.out.println("Choose a frame: ");     
    int a = sc.nextInt();
    if (a>12){
            break;
        }

  //some modifications to img1 here


    JFrame frame = new JFrame();
    JLabel lblimage = new JLabel(new ImageIcon(img1));
    frame.getContentPane().add(lblimage, BorderLayout.CENTER);
    frame.setSize(848, 480);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



}

2 个答案:

答案 0 :(得分:0)

我会创建你在while循环之外使用的JFrame的实例。 (或者可能是包含它的方法/函数。因此,当你调用方法时,你没有创建一个JFrame对象,你可以只修改一个已经存在的对象。)

如果你坚持一遍又一遍地创建一个新的JFrame,你可以实现这个来关闭JFrame窗口:

        frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));

这就好像你关闭了窗户一样。

答案 1 :(得分:0)

为什么不试试这个:

JFrame frame = null;
while(true){
    if(frame != null){
        frame.dispose();
    }
    ...
    frame = new JFrame();
    ...      
}

有了这个,你应该只有一个JFrame的实例。