【问题标题】:When to use AWT along with Swing and when not?何时将 AWT 与 Swing 一起使用,何时不使用?
【发布时间】:2014-02-12 06:49:06
【问题描述】:

您可以在整个网络上read AWT 旧且已弃用,Swing 旧但比 AWT 更新,应尽可能优先于 AWT。但是我如何确定何时可以用其 Swing 挂件替换 AWT 组件? Web 中的几个示例仍然使用 AWT 组件,而可以使用 Swing 代替。那么是否有明确的建议可以从 AWT 中使用什么,而不是什么?我知道当我使用官方弃用的组件时,java编译器会给出一个简短的说明,例如:

import java.awt.*;

public class Hello {
  public static void main( String[] args ) {
    Frame f = new Frame( "Hello" );
    f.setSize( 300, 300 );
    f.show();
  }
}

会产生这样的警告:

Note: Hello.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

-Xlint:

Hello.java:9: warning: [deprecation] show() in Window has been deprecated
    f.show();
     ^
1 warning

但就我对 web 和 oracle 的理解而言,我更喜欢使用 JComponents 而不是 AWT 组件。但是下面的代码不会注意到我使用 JFrame 而不是 Frame:

import java.awt.*;

public class Hello {
  public static void main( String[] args ) {
    Frame f = new Frame( "Hello" );
    f.setSize( 300, 300 );
    f.setVisible( true );
  }
}

总而言之,当我在网络上阅读代码时,我很好奇它是否是最新的并遵循尽可能使用 Swing 的原则,或者我是否需要改进。

换句话说:java.awt.* 及其子包的安全部分是什么?

感谢您的想法和建议。

【问题讨论】:

    标签: java swing awt


    【解决方案1】:

    在这个时代你没有必要使用 AWT,除非你能想出一个好的理由。如果涉及frame.show() 之类的内容,您显然正在阅读网络上过时(或只是简单可怕)的示例。

    【讨论】:

    • 例如:在 Swing 中是否有替换 java.awt.event.*BorderLayout?那么为什么oracle的官方教程还涉及AWT呢?
    • 事件和布局不是组件。使用它们没有任何问题。
    • 啊,这都是关于组件的,只有?因为还有一个javax.swing.event.* 包..
    • AWT 包含许多我们在 Swing 应用程序中仍然需要的非组件的东西。 ColorDimension、许多布局、打印、拖放、Java 2D .. 至于 Swing 是“旧的”,我不同意这个术语。它只是“成熟”。每个新的主要 Java 版本都为 Swing 添加了各种内容。
    • 我认为该评论值得作为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2011-04-29
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    相关资源
    最近更新 更多