【问题标题】:How to save a JTable after changes were made更改后如何保存 JTable
【发布时间】:2014-07-09 02:07:15
【问题描述】:

我想保存在表中所做的更改,然后当我想加载它时,我每次重新启动程序时都可以。 到目前为止,这是我的代码(请注意,我一直在寻找答案,但我不是最擅长 java):

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;


public class Table2 extends JFrame implements ActionListener{


//String[] colomn = {"Name","Age","Gender"};
Object[][] data = {{"John","20","Male"}};
JTable table = new JTable(new DefaultTableModel(data, new Object[]{"Name", "Age","Gender"})){

    public Component prepareRenderer(TableCellRenderer r, int data, int col){ //gives a pattern to the table cells.
        Component c = super.prepareRenderer(r, data, col);

        if(data % 2 == 0){
            c.setBackground(Color.PINK);
        }
        else{
            c.setBackground(Color.LIGHT_GRAY);
        }
        return c;
    }

};


//JTable table = new JTable(data,colomn);

public Table2(){

    table.setPreferredScrollableViewportSize(new Dimension(300,200));
    table.setFillsViewportHeight(true);

    JScrollPane scrollpane = new JScrollPane(table);
    add(scrollpane);
}

public static void main(String[] args) {

    Table2 table = new Table2();
    table.setLayout(new FlowLayout());
    table.setVisible(true);
    table.setSize(400,300);
    table.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    table.setResizable(false);
    table.setTitle("Table Prictice on JFrame");
    //table.pack();

    JButton button = new JButton("Add");
    table.add(button);
    button.addActionListener(table);
}

public void actionPerformed(ActionEvent e) {

    DefaultTableModel model = (DefaultTableModel) table.getModel();
    model.addRow(new Object[]{"", "", ""});
    System.out.println("Action Performed!");
}

}

【问题讨论】:

  • 您需要一个地方来存储更改。文件或数据库是最常见的解决方案。

标签: java swing jtable


【解决方案1】:

您可以使用 ObjectOutputStream 将数据数组保存到二进制文件中,然后可以从那里读取它。 为了节省你可以使用这样的东西:

ObjectOutputStream outstream = new ObjectOutputStream(new FileOutputStream("filename"));
        outstream.writeObject(data);
        outstream.close();

要阅读,您可以使用:

ObjectInputStream instream = new ObjectInputStream(newFileInputStream("filename"));
        Object[][] data = (Object[][]) instream.readObject();
        instream.close();

要获取更改的数据,请查看How to Retrieve JTable Data as an Array

【讨论】:

  • 可能值得一提的是,为了使其工作,您写入流的对象必须实现java.io.Serializable 接口。
猜你喜欢
  • 1970-01-01
  • 2019-12-17
  • 2020-07-29
  • 2018-07-01
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
相关资源
最近更新 更多