Java AWT与JFrame.setDefaultCloseOperation的等效值是什么?
我们正在使用JFrame的setDefaultCloseOperation(JFrame.EXIT\u ON\u CLOSE)方法 我想支持本地的外观和感觉,因此我必须使用AWT而不是Swing。那么,AWT方法与setDefaultCloseOperation等价的是什么呢Java AWT与JFrame.setDefaultCloseOperation的等效值是什么?,java,awt,Java,Awt,我们正在使用JFrame的setDefaultCloseOperation(JFrame.EXIT\u ON\u CLOSE)方法 我想支持本地的外观和感觉,因此我必须使用AWT而不是Swing。那么,AWT方法与setDefaultCloseOperation等价的是什么呢 我认为为了支持本地的外观和感觉,我们应该使用AWT而不是Swing,这是正确的吗?AWT中没有一种等效的方法,但您可以自己构建它 myFrame.addWindowListener( new WindowAdapter
我认为为了支持本地的外观和感觉,我们应该使用AWT而不是Swing,这是正确的吗?AWT中没有一种等效的方法,但您可以自己构建它
myFrame.addWindowListener(
new WindowAdapter(){
public void windowClosed(WindowEvent e) { System.exit(0); }
}
);
您可以在不使用AWT的情况下接近本机保真度。相反,使用UIManager设置默认的外观
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeel());
您必须在显示任何UI之前执行此操作,否则事情可能会变得有点棘手。除了在代码中设置L'n'F,还可以使用java/javaw参数-Dswing.defaultlaf 例如,在Windows下可以指定 -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel
可以找到更多信息。Java在awt和swing中提供了一个接口,用于处理命名窗口侦听器的窗口事件 我们使用setDefaultCloseOperation()方法只是为了避免swing中冗长的编码 窗口侦听器重写7个方法 命名 {} 我们必须将退出代码放在最后一个方法中,因为它处理窗口关闭 或者,我们可以使用适配器类。 使用适配器类比侦听器更有利,它允许我们只重写所需的一个或两个抽象方法,而不是强制重写侦听器的所有抽象方法。但是适配器的问题是它们被设计为抽象类,因此我们无法扩展到我们的类,因为类已经扩展了框架(Java不支持多重继承) 例如,在程序中使用以下代码
Frame f=新帧();
f、 addWindowListener(新的WindowListener()
{
公共作废窗口关闭(WindowEvent we)
{
系统出口(0);
}
});
Swing绝对支持原生外观@ChessPly76:但我认为我们只是创建了一种外观,可以为所有平台修复!如果你所说的“固定”是指“所有平台都一样”,那么你可以用Swing来实现——l&f被称为“金属”。如果你的意思是“每个平台的本地”,你也可以这样做。我已经链接到Sun的教程,在我的答案中有一个演示。使用swing。AWT是一场噩梦——这是他们第一次切割对象模型,他们在swing中修复了很多。我必须使用AWT,但你仍然可以救你自己!您应该添加更多的上下文,并说明为什么这可能会解决您应该为答案提供更多上下文的问题。不要只是展示一个解决方案。提供信息,说明它为什么以及如何解决问题,并解释如何使用该片段,否则人们很可能无法更好地理解你在说什么
public void windowOpened(WindowEvent e) { }
public void windowClosed(WindowEvent e) { }
public void windowActivated(WindowEvent e) { }
public void windowDeactivated(WindowEvent e) { }
public void windowIconified(WindowEvent e) { }
public void windowDeiconified(WindowEvent e) { }
public void windowClosing(WindowEvent e)