繁体   English   中英

AWT 和 Swing 组件无法正确呈现

[英]AWT and Swing components not rendering properly

我公司有一个应用程序,用于在服务器上搜索与客户相关的文件(macOS提供的搜索失败,甚至FoxTrotSearch等第三方程序也无法找到网络驱动器上的所有文件)。

有时(可能是 10% 的次数),首选项框架没有完全渲染。 一些组件只是在屏幕上丢失,但以某种方式存在,因为其他组件正确放置在空白空间周围。 如果我选择另一个窗口/框架/应用程序,则会出现缺少的组件。

没有正确渲染帧,最低的面板应该看起来像上面的那些,但它几乎没有填充

我已经注意到,当涉及更多组件时,问题会更频繁地出现。 有时只缺少几个组件,有时接近 50%。

我在调用validate(); pack(); setVisible(true);之前放置并添加了所有组件validate(); pack(); setVisible(true); 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 具有重量级组件。

IE 而不是Component , Label & TextField使用JComponent (或JPanel ), JLabel & JTextField

注意: Swing建立在 AWT 组件之上的——Swing 组件的继承层次通常最终会返回到 AWT 组件。 Swing 还使用了大量 AWT API(打印、Java2D 字体等)和许多基于 AWT 的布局。 这只是我们需要小心的组件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM