单击一个按钮后,我想要JPanel删除一些要删除的组件,并创建一些新的组件.
我能够删除并添加新的,但JPanel不会重新绘制自己.只有在我手动执行某些操作后,例如更改框架大小,框架才会"刷新",我得到了我想要的东西.
这是代码的相关部分,在此示例中,它按给定日期启动组件:
private ClassName() {
date = Date.getToday();
init(date.toString());
}
private void lastDayActionPerformed(ActionEvent evt) {
this.removeAll();
date = date.getYesterday();
init(date.toString());
}
Run Code Online (Sandbox Code Playgroud)
如果您希望组件在按下按钮后重新布局和重新绘制,并且在修改了GUI的状态之后,则直接在ActionListener的代码中调用:
private void lastDayActionPerformed(ActionEvent evt) {
this.removeAll();
date = date.getYesterday();
init(date.toString());
revalidate(); // re-lays out child components
repaint(); // repaints the component
}
Run Code Online (Sandbox Code Playgroud)
但是,听起来你真的想要使用CardLayout为你交换视图,因为这正是为这个类创建的.