【发布时间】:2013-01-29 01:48:32
【问题描述】:
我在挥杆绘画方面有一些问题。
我的以下 UI(看下一张图片)在左侧有一个 JTextField,它可以显示自动完成提示。在右侧,应显示从文本字段中选择的元素。这些元素包含在使用 FlowLayout(FlowLayout.LEFT) 作为布局管理器的 JPanel 中。
现在,当从文本字段中选择一些元素时,这些元素将被添加到流程布局中,这些元素将不会被绘制。 (如下图所示)
现在我有两种可能性来展示这些未绘制的元素。
首先:调整 JFrame 的大小后,将显示元素。
第二:选择足够多的元素,使 FlowLayout 必须换行。换行后将显示所有元素。选择其他元素时,它们直到下一个换行符才会显示。
FlowLayout 换行后的元素:
我能做什么?
【问题讨论】:
-
添加元素后,尝试在 FlowLayout 面板上调用:
revalidate()。这将强制布局管理器再次布局其组件。如果没有看到一些代码,我无法提出更多建议。问题也可能出在您的绿色组件绘制方法中。 -
如果
revalidate()不起作用,请尝试添加repaint()。 -
我已经尝试过以下“神奇”的摇摆方法:validate()、revalidate()、repaint()、updateUI()。
-
您是否尝试在外部 JPanel 上使用
SwingUtilities.invokeLater()进行 validate()? - 顺便提一句。这也是我不喜欢 Swing 的原因之一! -
如需尽快获得更好的帮助,请发布SSCCE。和重新。
JXLabel。将其分解为 SSCCE 并改用JLabel。我猜你可以使用纯 J2SE 以同样的方式让它失败。
标签: java swing awt layout-manager swingx