Java 如何刷新JInternalFrame或JTable

Java 如何刷新JInternalFrame或JTable,java,swing,jtable,jinternalframe,Java,Swing,Jtable,Jinternalframe,我有JInternalFrame包含JTable。如何刷新JInternalFrame 或者JTable当单击JButton-->update时,最简单的方法是在actionlistener中调用.repaint()。例如: public class RefreshingButton extends JButton implements ActionListener{ private static final long serialVersionUID = 1L; private

我有
JInternalFrame
包含
JTable
。如何刷新
JInternalFrame

或者
JTable
当单击
JButton-->update
时,最简单的方法是在actionlistener中调用
.repaint()
。例如:

public class RefreshingButton extends JButton implements ActionListener{
    private static final long serialVersionUID = 1L;
    private final JComponent componentToRefsesh;

    public RefreshingButton(JComponent toRefresh) {
        super("Refresh JTable");
        this.componentToRefsesh = toRefresh;
        this.addActionListener(this);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        componentToRefsesh.repaint();
    }
}

最好的方法是使用模型-视图-控制器设计模式

更新
表格模型时,
JTable
应自动刷新。如果没有,则应更正您的
TableModel
,例如。

请编辑您的问题,以包含显示您描述的问题的。可能创建
TableModel
并使用
fireTableStructureChanged()
AFAIK重新绘制用于图形(2D),在更改到组件树后通知LayoutManager,doLayout和notifyno的情况也一样。a) 不要将JSomething子类化,而是使用它b)不要公开不用于公共用途的api(这里是actionListener回调),而是在内部实例化/实现侦听器并使用它c)大多数时候,似乎需要重新绘制,但设置有问题