我注意到人们建议不要混合使用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在内的很多人(因为我从他们的教程here那里得到了它)仍然使用AWT导入,尽管我看到它主要用于Listener
。
如何为Listener
,Key
,Button
按下/清除等内容添加原生 Swing JComboBox
/库?< / p>
或者我会使用firePropertyChangeListeners()
吗? (虽然这与Java Bean有关)
一段时间以来我一直很困惑,我的应用程序大部分都有Swing和AWT,据说这很糟糕?
答案 0 :(得分:9)
Swing建立在AWT之上,具有创建和绘制UI组件的不同理念。混合来自两个框架的UI组件可能会导致意外结果,因此不鼓励(因为kleopatra声明,这已得到修复)。 然而,Swing仍然使用AWT事件队列范例,包括侦听器 - 它不会用Swing原生的侦听器替换它们,因为没有理由。
对你的应用程序使用Swing和AWT是常见的做法,你被警告的是同时使用Swing和AWT UI组件。
答案 1 :(得分:7)
Swing与AWT共享了不少类,并使用了一些相同的实现 - 请注意,javax.swing.JComponent(基本Swing组件类)实际上是从java.awt.Component(基本AWT容器类)继承的< / p>
如果你小心的话,混合使用Swing和AWT实际上并不是一个问题。主要缺陷是:
答案 2 :(得分:0)
也许有人会在将来看到这一点,但仍然觉得它很有用。 There's a list AWT组件以及他们的Swing替换品。