从文件加载行后,JTable不刷新

时间:2014-01-20 22:11:25

标签: java swing arraylist

我正在使用XStream将我的对象序列化/反序列化为文件。我有非常基本的JFrame窗口和一些按钮,例如“添加”,“显示表”和“从文件加载”。 “加载”将XML文件反序列化回我的ArrayList<Person>对象。 “Add”将一个Object添加到ArrayList。问题是,当我点击“添加”然后按“显示表格”时,它会按照计划显示一行。但是当我将其保存到文件时,重新启动应用程序,然后加载&amp;显示表 - 它什么都没显示。当我单击“添加”并再次“显示表格”仍为零时,即使ArrayList.size()返回的int大于0.

代码位,加载功能:

public void Load(){
    XStream xstream = new XStream(new StaxDriver());
    xstream.alias("database", Baza.class);
    xstream.alias("Person", Person.class);
    try{
        FileInputStream k = new FileInputStream("src/swing/project/database.xml");
        baza = (Baza)xstream.fromXML(k);
        baza.showAll();
        showPerson(baza.people.get(0));
    } catch(FileNotFoundException e){
        e.printStackTrace();
    }
    System.out.println("Loaded! " + baza.getSize());
}

具有表初始化函数的JScrollPane:

   public JScrollPane srodekTabela(){
       TableM modelik = new TableM(model.getBaza().people); //
       JTable tabela = new JTable(modelik); 

       tabela.setPreferredScrollableViewportSize(new Dimension(500, 500));
       tabela.setFillsViewportHeight(true);
       tabela.setModel(modelik);
       JScrollPane scroll = new JScrollPane(tabela);
       scroll.setOpaque(true);

       return scroll;
}

然后,当按下“显示表格”按钮时,我只删除所有其他JLabel,重新验证&amp;重新绘制JScrollPane,它通常添加到JFrame。

    public void pokazTabele(){
        okno.remove(srodekDodaj);
        okno.remove(srodekZmien);
        okno.remove(srodekUsun);
        okno.remove(srodekTabela);                
        okno.add(srodekTabela, BorderLayout.CENTER);
        okno.revalidate();
        okno.repaint();
    }

我希望我提供所有信息。不知道为什么它不能用于预加载的ArrayList,并且适用于在运行中创建ArrayList。

0 个答案:

没有答案