6

我有一个与 Java 相关的一般性问题。

我正在编写一个具有 GUI 菜单的应用程序。我正在尝试根据单选按钮的选择来更改 GUI 菜单的一部分。

我需要:

  1. 重绘整个窗口或只更新该部分:

    setVisible(true)?
    
  2. 如果我只使用上面#1 中的语句.. GUI 很好——直到我将鼠标移到它上面,然后我看到上一个按钮选择。我究竟做错了什么?

4

3 回答 3

8

Swing 组件具有 repaint()、revalidate() 和 doLayout() 方法。其中一个应该能够重新绘制你想要的任何部分。但是, doLayout 不是您应该负责的事情,这是布局引擎的责任。

您可能还想查看这篇文章,第一个回复有一个很好的解释,并链接到更详细的文章。

关于您问题的第二部分,我不确定,但我们可能需要查看一些代码才能了解。“替换区域”是否实际上已从视图中删除?

于 2012-10-12T19:29:51.317 回答
4

..在我的应用程序中,用户选择他们想要进行顶级测试的设备平台类型(该选择是左侧的一组两个单选按钮)。当用户选择 Android 或 iOS 时,复选框的中心分组会发生变化,以反映他们可以测试的一组 Android 设备或一组他们可以测试的 iOS 设备。

  1. 在“中心分组”中放置一个面板。
  2. 使用 aCardLayout作为面板。
  3. 使用卡片布局将 iOS 和 Android 控件添加到面板。
  4. 根据需要在它们之间翻转。
于 2012-10-12T19:59:43.553 回答
2

调用revalidate()顶层组件。

于 2012-10-12T19:37:45.733 回答