2017-03-14 29 views
0

这是我的第一个问题,所以如果存在任何错误,请纠正我的错误。我在Java(Eclipse)中创建了一个面板框架,应用程序在按下十字按钮时不会关闭

这是代码,我尝试使用面板制作一个框架,但应用程序在按关闭按钮时不退出。

当我试图设置默认关闭操作退出时,它显示我一个错误。

所以,请帮助我。

import java.awt.*; 

public class FramewithPanel { 

    private Frame f; 
    private Panel p; 

    public FramewithPanel(String title){ 
     f = new Frame(title); 
     p = new Panel(); 
    } 

    public void LaunchFrame() { 
     f.setSize(200,200); 
     f.setBackground(Color.blue); 
     f.setLayout(null); 

     p.setSize(100,100); 
     p.setBackground(Color.yellow); 

     f.add(p); 
     f.setVisible(true); 
    } 



    public static void main(String args[]) { 
     FramewithPanel guiWindow = 
      new FramewithPanel("Frame with Panel"); 

     guiWindow.LaunchFrame(); 
    } 
} 
+1

在你的问题你说的是一个错误。分享错误/堆栈跟踪可能很有用。 – Nrzonline

回答

0

看到,因为你提到你是使用Frame,而不是替代JFrame坚持,最简单的解决方案是增加一个WindowListener像这样:

f.addWindowListener(new WindowAdapter() { 
    @Override 
    public void windowClosing(WindowEvent e) { 
     System.exit(0); 
    } 
}); 

Et v oila!

+1

非常感谢您的回答! –

1

我猜你想使用JFrame代替Frame,为Frame没有默认的关闭操作。相反,它根本不会关闭,只会生成WindowEvent类型的WINDOW_CLOSING

所以你要么

private JFrame f; 

// and in the constructor 
f = new JFrame(title); 
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); 

f = new Frame(title); 
f.addWindowListener(new WindowAdapter() { 

    @Override 
    public void windowClosing(WindowEvent e) { 
     f.dispose(); 
    } 

}); 
+0

非常感谢,但我已经知道,我只想使用一个框架。我相信,当JFrame不在时,Frame也被使用过。 –

+0

@Sarthak你完全正确。虽然我通常不推荐它,但您当然也可以使用“Frame”。 'WindowListener'和'defaultCloseOperation'完全一样。只是它在稍微不同的时间被调用,但这对你的情况无关紧要。 – Izruo

+0

非常感谢,伙计! –

相关问题