3

我在 SO 上读到混合 awt 和 swing 并不是 Java 中 GUI 编程的好方法。但是,我无法找到任何在使用 swing 时不使用某些 awt 组件的示例。例如,即使在使用 swing 时,我遇到的大多数示例都会使用 awt 进行布局和事件处理。

话虽如此,在使用 Java 的 GUI 编程中不混合 swing 和 awt 意味着什么?这只是意味着不要同时从 swing 和 awt 借用图形小部件,例如按钮、画布,还是完全单独使用 swing 或 awt?或者可以使用来自 Swing 的图形单元(如按钮、面板)和来自 awt 的事件处理和布局?

大多数情况下,导入至少看起来像这样:

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

我可能是错的,但由于我是 Java GUI 的新手,所以我没有看到在没有 awt 的情况下完全使用 swing 或以错误的方式看待它的示例。

4

1 回答 1

5

在使用 Swing 时,您将使用 AWT 布局、动作侦听器等 - 这没关系,并且根据设计,Swing 框架在这方面构建在 AWT 之上。这与 JavaFX 形成鲜明对比,JavaFX 本身就是一个完整的 GUI 框架,包含自己的布局、事件处理程序等。

如果可能的话,您应该避免混合放置在 GUI 中的实际组件- 例如,在 Frame(而不是 JFrame)内使用 JButton,或者并排使用 Button 和 JButton。

在某些情况下这是必要的——例如,如果您想使用普通的嵌入式视频播放器,在 Swing 应用程序中使用 VLCJ 需要重量级 (AWT) 画布。但是,如果没有像上面这样的良好用例,则应该避免这种情况。

于 2013-09-20T14:01:31.460 回答