如何用Java刷新GUI?
我有一个与Java相关的一般性问题 我正在编写一个具有GUI菜单的应用程序。我试图根据单选按钮的选择更改GUI菜单的一部分 我是否需要:如何用Java刷新GUI?,java,swing,user-interface,Java,Swing,User Interface,我有一个与Java相关的一般性问题 我正在编写一个具有GUI菜单的应用程序。我试图根据单选按钮的选择更改GUI菜单的一部分 我是否需要: 重新绘制整个窗口或仅使用以下内容更新该部分: setVisible(true)? 如果我只使用上面第1条中的语句。。GUI很好——直到我将鼠标移到它上面,然后我看到前面的按钮选择。我做错了什么 Swing组件有一个repaint()、revalidate()和doLayout()方法。其中一个应该能够重新绘制任何你想要的部分。然而,doLayout不是你应
setVisible(true)?
Swing组件有一个repaint()、revalidate()和doLayout()方法。其中一个应该能够重新绘制任何你想要的部分。然而,doLayout不是你应该负责的事情,那是布局引擎的责任 你可能还想看看,第一个回复有一个很好的解释,并链接到一篇更详细的文章 关于你问题的第二部分,我不确定,但我们可能需要看一些代码来了解情况。“替换区域”是否实际从视图中删除?调用顶层组件上的
revalidate()
..在我的应用程序中,用户选择要进行top测试的设备平台类型(该选项是左侧两个单选按钮的集合)。当用户选择Android或iOS时,复选框的中心分组将更改,以反映他们可以测试的一组Android设备或他们可以测试的一组iOS设备
卡片布局
用于面板李>
我认为有一种paint()方法repaint()可能是您尝试的方法,但它根本不起作用。我尝试了setVisible(true),但这也不起作用?告诉我们你为什么要这样做,现在你在问怎么做,为什么之后是什么!在Swing中,您不必手动执行所要求的操作,只需更新模型,屏幕就会自动更新。您不必手动重新绘制任何组件。如何更新菜单?我需要导入什么才能使用repaint()或doLayout()?您不需要导入任何额外的内容,这些应该是您正在使用的Swing组件上的方法--请参阅文档。组件的任何子类都应该有这些方法可用。您避免直接调用doLayout,如果您发现自己处于这样一个位置:这是唯一有效的方法,那么您就错了一件事。doLayout应该对您当前的容器产生更大的影响。相反,使用invalidate Instead我认为我已经在我的答案中添加了revalidate。。。我的错误。不过,这个问题与关于它的讨论有关。现在更新我的答案。没问题。但是,如果这是一个可能来回切换的东西,你可能也想考虑Andrew Thompson的答案——使用CARDFayStay将保持两个“屏幕”在内存中,并且删除很多手工工作来翻转它们。我是java新手,所以请对我耐心一点…到底如何在顶级组件上调用revalidate()?每次我尝试在repaint()之后插入它时,它都会得到一个编译器错误。