当前位置: 首页 > 面试题库 >

Swing和AWT混合不好,但是仍然完成,为什么?

米浩穰
2023-03-14
问题内容

我注意到人们建议不要混合使用Swing和AWT Components,但是我们看到了很多:

import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.ImageIcon;
 //AWT imports though only for listeners
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

因此,为什么许多包括Java的人(因为我在这里从他们的教程中得到了答案)仍然使用AWT导入,尽管我看到它主要用于Listeners。

你如何添加 本地 的Swing ListenerS /图书馆像的东西KeyButtonJComboBox冲床/
slections等?

还是我会用firePropertyChangeListeners()?(尽管与Java Bean有关)

现在已经让我困惑了一段时间,我的大多数应用程序都具有Swing和AWT,据说这很糟糕?


问题答案:

Swing与AWT共享许多类,并使用相同的实现-
请注意,javax.swing.JComponent(Swing的基础组件类)实际上是从java.awt.Component(AWT的基础容器类)继承的

如果小心的话,将Swing和AWT混合起来实际上并不是什么大问题。主要的陷阱是:

  • 如果混合使用AWT和Swing UI组件,则可能会面临外观和感觉截然不同的风险
  • Swing组件是“轻量级”(由Java渲染),而AWT组件是“轻量级”(在主机平台中实现为组件)-这意味着如果将AWT组件放入Swing组件中,则会遇到问题(反之亦然)


 类似资料:
  • 问题内容: 从文档中: 注意: AngularJS指令属性采用带嵌入式表达式的表达式 或 插值标记。将插值标记嵌入表达式中被认为是 不好的做法 : — AngularJS开发人员指南-插值 我正在寻找一个写得很好的规范答案,可以给读者指出。 问题答案: 从文档中: 为什么混合插值和表达式是不好的做法: 它增加了标记的复杂性 由于插值本身是一个指令,因此不能保证它适用于每个指令。如果另一个指令在插值

  • 问题内容: 有人可以解释一下Swing和AWT有什么区别吗? 在任何情况下,AWT都比挥杆更有用/建议使用,反之亦然? 问题答案: AWT是你操作系统中存在的本机系统GUI代码的Java接口。尽管它会尝试,但在每个系统上都无法正常工作。 Swing或多或少是纯Java GUI。它使用AWT创建操作系统窗口,然后将按钮,标签,文本,复选框等的图片绘制到该窗口中,并响应你的所有鼠标单击,键输入等,从而

  • 我不熟悉Selenium,也不熟悉Java。我是一名测试人员,而不是开发人员,所以我正试图逐渐将我的Selenium IDE脚本转换成更健壮和“合适”的东西。不幸的是,我正在努力完成一项相当基本的任务。网页加载后,我想单击一个按钮。这在Selenium IDE中运行良好,但前提是我将速度设置为“slow”。 我可以使用下面的代码让它工作,但前提是我包含了线程。睡眠线。我已经读到这不是一个好主意,所

  • 问题内容: 我已经简短地研究了GWT,并且喜欢我可以用Java开发并将应用程序编译为HTML和JavaScript的想法。GWT和AWT和Swing背后的概念是相同还是不同? 问题答案: GWT在使用Widget,面板和提供的EventListener方面与Swing非常相似。观察GWT的另一种方法是将Javascript和HTML视为汇编语言,而将GWT视为生成Javascript和HTML的一

  • Python有一个令人困惑的工具历史,可以用来打包和描述项目:这些工具包括标准库中的,,和(也许更多)。似乎和被停用,取而代之的是,这留下了两个相互竞争的标准。 据我所知,提供了比多得多的选项(例如,声明依赖项、测试等),但是它没有包含在Python标准库中(尚未?)。 Python打包用户指南[1]现在建议: 使用定义项目并创建源发行版。 并解释道: 尽管您可以对许多项目使用纯,但它不支持定义对

  • 我知道十进制数不能精确地用有限二进制数表示(解释),因此将失去一些精度,并且不能精确地。另一方面,可以准确地表示,因为它是。 可以理解的是,三次添加并不能准确地给出,所以下面的代码打印: 如果不能精确地表示,那么添加5次它怎么能精确地给出可以精确地表示呢?