AWT 和 Swing 组件无法正确呈现
AWT and Swing components not rendering properly
我有一个在我们公司使用的应用程序,用于在服务器上搜索与客户相关的文件(macOS 提供的搜索失败,甚至 FoxTrotSearch 等第三方程序也无法找到网络驱动器上的所有文件) .
有时(可能是 10% 的次数),首选项框未完全呈现。有些组件只是在屏幕上丢失了,但由于其他组件正确地放置在空白 space 周围,所以以某种方式存在。如果我 select 另一个 window/frame/application.
就会出现缺少的组件
我注意到,当涉及的组件越多时,问题出现的频率就越高。有时只缺少几个组件,有时接近 50%。
我在调用之前放置并添加了所有组件 validate(); pack(); setVisible(true);
我是否遗漏了什么或者这是必须接受的行为?
为了完整起见:我正在使用以下组件:
java.awt.Component
java.awt.Label
java.awt.TextField
javax.swing.JCheckBox
javax.swing.JFrame
javax.swing.JSeparator
javax.swing.JSpinner
- (
java.awt.FlowLayout
)
- (
javax.swing.BoxLayout
)
不要混用 Swing 和 AWT 组件。将它们混合在一起可能(经常)会导致问题,因为 Swing 提供轻量级组件,而 AWT 具有重量级组件。
即而不是 Component
、Label
& TextField
使用 JComponent
(或 JPanel
)、JLabel
& JTextField
.
注意: Swing 是 构建在 AWT 组件之上的——Swing 组件的继承层次结构通常最终会返回到 AWT 组件。 Swing 还使用了大量的 AWT API(打印、Java2D 字体等)和许多基于 AWT 的布局。这只是我们需要小心的组件。
我有一个在我们公司使用的应用程序,用于在服务器上搜索与客户相关的文件(macOS 提供的搜索失败,甚至 FoxTrotSearch 等第三方程序也无法找到网络驱动器上的所有文件) .
有时(可能是 10% 的次数),首选项框未完全呈现。有些组件只是在屏幕上丢失了,但由于其他组件正确地放置在空白 space 周围,所以以某种方式存在。如果我 select 另一个 window/frame/application.
就会出现缺少的组件我注意到,当涉及的组件越多时,问题出现的频率就越高。有时只缺少几个组件,有时接近 50%。
我在调用之前放置并添加了所有组件 validate(); pack(); setVisible(true);
我是否遗漏了什么或者这是必须接受的行为?
为了完整起见:我正在使用以下组件:
java.awt.Component
java.awt.Label
java.awt.TextField
javax.swing.JCheckBox
javax.swing.JFrame
javax.swing.JSeparator
javax.swing.JSpinner
- (
java.awt.FlowLayout
) - (
javax.swing.BoxLayout
)
不要混用 Swing 和 AWT 组件。将它们混合在一起可能(经常)会导致问题,因为 Swing 提供轻量级组件,而 AWT 具有重量级组件。
即而不是 Component
、Label
& TextField
使用 JComponent
(或 JPanel
)、JLabel
& JTextField
.
注意: Swing 是 构建在 AWT 组件之上的——Swing 组件的继承层次结构通常最终会返回到 AWT 组件。 Swing 还使用了大量的 AWT API(打印、Java2D 字体等)和许多基于 AWT 的布局。这只是我们需要小心的组件。