Java 如何在按钮单击等事件后自动重新绘制?

Java 如何在按钮单击等事件后自动重新绘制?,java,swing,Java,Swing,单击按钮后,我希望删除JPanel的一些组件,并创建一些新组件 我可以删除和添加新的,但是JPanel不会重新绘制自己。只有在我手动执行某些操作后,如更改帧大小,帧才会“刷新”,我才能得到所需的内容 下面是代码的相关部分,在本例中,它在给定日期启动组件: private ClassName() { date = Date.getToday(); init(date.toString()); } private void lastDayActionPerformed(Action

单击按钮后,我希望删除
JPanel
的一些组件,并创建一些新组件

我可以删除和添加新的,但是
JPanel
不会重新绘制自己。只有在我手动执行某些操作后,如更改帧大小,帧才会“刷新”,我才能得到所需的内容

下面是代码的相关部分,在本例中,它在给定日期启动组件:

private ClassName() {
    date = Date.getToday();
    init(date.toString());
}

private void lastDayActionPerformed(ActionEvent evt) {                                        
    this.removeAll();
    date = date.getYesterday();
    init(date.toString());
}

如果您希望组件在按下按钮并修改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
}  

但是,听起来您真的很想使用交换视图,因为这正是创建此类的目的。

如果您想在按下按钮并修改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
}  
但是,听起来您真的很想使用交换视图,因为这正是创建此类的目的