【问题标题】:Swing Painting Issue摇摆绘画问题
【发布时间】: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


【解决方案1】:

交换 FlowLayout 抛出自定义 WrapLayout 解决了这个问题。好像是布局问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    相关资源
    最近更新 更多