无法更新JFrame

时间:2017-06-12 05:04:57

标签: java swing jframe

我试图更新框架,但它没有发生。我怎么做以及当Refresh()调用时会发生什么?

public class tttt extends JFrame{
    private JTable tab;
    private JPanel panel1;

    private void createUIComponents() {//Custom Create for tab
        Object[][] data1 =  {{'1'}};
        Object[] data2 = {'2'};
        tab = new JTable(data1, data2);
    }

    public void CreateFrame(){
        setContentPane(panel1);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    public void Refresh(){
        Object[][] data1 =  {{'9'}};
        Object[] data2 = {'9'};
        this.tab = new JTable(data1, data2);
    }
}

public class Main {
    public static void main(String[] args) {
        tttt Frame = new tttt();//create frame with table with '1'
        Frame.CreateFrame();
        Frame.Refresh();//frame doesn`t change
    }
}

抱歉我的英文。

1 个答案:

答案 0 :(得分:0)

您需要更正代码中的许多内容:

  1. 您需要正确创建组件层次结构并实例化组件层次结构中的所有对象。在您的示例中,您应该有JFrame - > JPanel - > JTable正确初始化并添加到组件层次结构中。您的代码未实例化名为JPanel的{​​{1}}。您将在此行panel1中获得Null指针异常。

  2. 应在您想要显示UI之前调用setContentPane(panel1);pack();方法。应该在setVisible(true);方法之后调用它们。同样,使用命名约定来正确命名类和方法。

  3. 我希望这有帮助!

    更新

    发布代码:

    Refresh()