Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AWT与JFrame.setDefaultCloseOperation的等效值是什么?_Java_Awt - Fatal编程技术网

Java AWT与JFrame.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

我们正在使用JFrame的setDefaultCloseOperation(JFrame.EXIT\u ON\u CLOSE)方法

我想支持本地的外观和感觉,因此我必须使用AWT而不是Swing。那么,AWT方法与setDefaultCloseOperation等价的是什么呢


我认为为了支持本地的外观和感觉,我们应该使用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)