目前,仅出于测试目的,每次单击jframe上的jpanel时,我都想更改它。我在3个面板/页面中循环,每个面板/页面都有其独特的背景色。
目前,它将改变,但只有当它涉及到第一个面板,否则显示默认的灰色。
代码:
@Override
public void mouseClicked(MouseEvent e) {
mainFrame.changePage();
}
public void changePage() {
if(currentPage != null) {
this.remove(currentPage);
}
currentPage = pages[pageNumber];
this.add(currentPage);
currentPage.setPage();
super.repaint();
pageNumber++;
if(pageNumber > 2) {
pageNumber = 0;
}
}
2条答案
按热度按时间deyfvvtc1#
除了@camickr的评论之外
CardLayout
,你需要revalidate
. 更改:到
v09wglhw2#
编辑:由于@camickr提到我下面的代码不符合最佳实践,请参考以下关于如何使用cardlayout的链接。
如何使用cardlayout-java教程
关联源
只是为了测试
重点放在上面,下面是一些示例代码。这不是生产级别,只是一个poc,不需要@camickr提到的cardlayout。