Java 如何在运行时刷新JPanel?
我发现这里有很多类似的话题,但我的问题更复杂 我的问题背景: 我有一个叫Main的JFrame。在这个JFrame上,我有两个按钮和一个叫做WorkingPanel的JPanel。然后我有另一个JPanel(称为PlayerPanel),但这是一个seprate文件(作为类) 现在我想,当我点击一个按钮时,它应该将WorkingPanel更改为PlayerPanel。我已经编写了以下代码Java 如何在运行时刷新JPanel?,java,swing,user-interface,Java,Swing,User Interface,我发现这里有很多类似的话题,但我的问题更复杂 我的问题背景: 我有一个叫Main的JFrame。在这个JFrame上,我有两个按钮和一个叫做WorkingPanel的JPanel。然后我有另一个JPanel(称为PlayerPanel),但这是一个seprate文件(作为类) 现在我想,当我点击一个按钮时,它应该将WorkingPanel更改为PlayerPanel。我已经编写了以下代码 private void MenuButtonPlayerViewMouseClicked(java.awt
private void MenuButtonPlayerViewMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
WorkingPanel = new PlayerPanel();
System.out.println(WorkingPanel.getName());
WorkingPanel.revalidate();
WorkingPanel.repaint();
WorkingPanel.setVisible(true);
Window.revalidate();
Window.repaint();
}
请引导我,谢谢
我发现这里有很多类似的话题,但我的问题更复杂
相反,您描述的是一个非常基本的问题,使用CardLayout很容易解决。我建议你现在就这样做。如果您已经准备好了,您的方法可以简单到:
private void MenuButtonPlayerViewMouseClicked(java.awt.event.MouseEvent evt) {
cardLayout.show(cardPanel, WORKING_PANEL);
}
其中cardLayout是cardLayout变量,cardPanel是显示交换JPanel的“卡”的JPanel,WORKING_PANEL是将WorkingPanel实例添加到cardPanel时使用的字符串常量
第2点: 不要在按钮上使用鼠标侦听器,因为它不会正常工作。例如,如果通过
setEnabled(true)
禁用按钮,则该按钮不会真正被禁用。相反,如教程所示,使用带有JButtons的ActionListener。这就是他们的目的
编辑
有关使用GUI的CardLayout示例,请查看:
private void MenuButtonPlayerViewMouseClicked(java.awt.event.MouseEvent evt) {
cardLayout.show(cardPanel, WORKING_PANEL);
}
其中cardLayout是cardLayout变量,cardPanel是显示交换JPanel的“卡”的JPanel,WORKING_PANEL是将WorkingPanel实例添加到cardPanel时使用的字符串常量
第2点: 不要在按钮上使用鼠标侦听器,因为它不会正常工作。例如,如果通过
setEnabled(true)
禁用按钮,则该按钮不会真正被禁用。相反,如教程所示,使用带有JButtons的ActionListener。这就是他们的目的
编辑
有关使用GUI的CardLayout示例,请查看:
CardLayout
是一种不太详细的方法。您可以使用它来代替这种方法。您将能够在不同面板之间轻松高效地切换。还有一点值得一提的是,使用CardLayout
是一种不太详细的方法。使用CardLayout,包含两个面板,但一次只显示一个。CardLayout以示例形式记录在。使用CardLayout中,包含两个面板,但一次仅显示一个面板。CardLayout在。我正在使用Netbeans visual designer,如何使用CardLayout?通过手工编写代码,在中有示例记录。编辑:实际上,对于一些JPanel
,您可以在NetBeans中很容易地设置它。只需右键单击所需的JPanel
>设置布局>CardLayout@ZulfiqarJunejo:我强烈建议您在了解所使用的库之前不要使用代码生成器。首先手工编写代码以获得这种理解。@ZulfiqarJunejo:举个例子,你在JButton上使用鼠标听筒,这是你几乎不应该做的事情,Oracle Swing教程会告诉你的事情。请看一看教程。我正在使用Netbeans visual designer,如何使用CardLayout?用手编写代码。编辑:实际上,对于一些JPanel
,您可以在NetBeans中很容易地设置它。只需右键单击所需的JPanel
>设置布局>CardLayout@ZulfiqarJunejo:我强烈建议您在了解所使用的库之前不要使用代码生成器。首先手工编写代码以获得这种理解。@ZulfiqarJunejo:举个例子,你在JButton上使用鼠标听筒,这是你几乎不应该做的事情,Oracle Swing教程会告诉你的事情。请看一下教程。使用标准Java命名约定是为了让人们阅读您的代码。变量名不以大写字符开头。类名确实以大写字符开头,因此您的代码很难阅读。遵循课本或教程中的指导原则。不要自己编造!使用标准Java命名约定是为了让人们阅读您的代码。变量名不以大写字符开头。类名确实以大写字符开头,因此您的代码很难阅读。遵循课本或教程中的指导原则。不要自己编造!