如何将值加载到JTable中,以便在打开表单时显示以前的值?

如何将数组值加载到JTable这样无论何时打开表单,它都会显示表的先前值? 我不想将表单连接到任何数据库。

这是我的代码到目前为止,它允许我在文本字段中输入文本,当我单击“创建客户”按钮时,它将值存储到JTable 。 但是,如果我退出并重新打开表单,表格中先前的数据将消失。 我做了一些研究,但似乎将netbeans连接到数据库是保存和检索数据的唯一方法。 但是,我相信将数据存储到数组中也是可能的,但我不知道如何将数组中的值带出到表中。

我需要一些帮助。 这是我的学校项目。 仅供参考,我使用过的一些符号: rbtn = radiobutton, tb = textfields, lbl = label

 public class Customer extends javax.swing.JFrame { String gender; int year = Calendar.getInstance().get(Calendar.YEAR); int month = Calendar.getInstance().get(Calendar.MONTH); int day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); int m=10; //array memory size String[] name = new String[m]; String[] age = new String[m]; String[] genderm = new String [m]; String[] id = new String [m]; String[] mobile = new String [m]; String[] email = new String [m]; String[] address = new String [m]; String[] date = new String [m]; String[] photo = new String[m]; public Customer() { initComponents(); tbdate.setText(day+"/"+(month+1)+"/"+year); lblphoto.setIcon(null); } private void btncreateActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if (rbtnmale.isSelected()){ gender = "Male"; } else if (rbtnfemale.isSelected()){ gender = "Female"; } DefaultTableModel model = (DefaultTableModel) jtablecustinfo.getModel(); model.addRow(new Object[]{tbname.getText(),tbage.getText(),gender,tbid.getText(),tbmobile.getText(),tbemail.getText(),tbaddress.getText(),tbdate.getText(),lblphoto.getIcon()}); for(int i=0;i<m;i++){ name[i]=tbname.getText(); age[i] = tbage.getText(); genderm[i]=gender; id[i]=tbid.getText(); mobile[i]=tbmobile.getText(); email[i]=tbemail.getText(); address[i]=tbaddress.getText(); date[i]=tbdate.getText(); photo[i]= tbimage.getText();; } //Reset everything after creation JOptionPane.showMessageDialog(null,"Successfully Created Customer"); tbname.setText(""); tbage.setText(""); tbid.setText(""); tbmobile.setText(""); tbemail.setText(""); tbaddress.setText(""); tbdate.setText(""); rbtnmale.setSelected(false); rbtnfemale.setSelected(false); tbdate.setText(day+"/"+(month+1)+"/"+year); gender = ""; tbimage.setText(""); lblphoto.setText(" -Import photo-"); lblphoto.setIcon(null); } 

我已经包含了我的代码的要点,希望它足以查看!

对于少量数据,请考虑java.util.prefs.Preferences

你能提供一些如何使用它的例子吗?

Preferences API Overview和此处引用的示例( API和代码 )中检查了几个示例。 或者,请考虑javax.jnlp.PersistenceService引用的javax.jnlp.PersistenceService “对于在受限执行环境中运行的应用程序”。

此最小示例通过将先前保存的值添加到表中并覆盖表模型的setValueAt()实现来更新单个单元以保存任何更改。 编辑表,退出并重新启动以查看效果。

图片

 package org.name.table; import java.awt.Dimension; import java.awt.EventQueue; import java.util.prefs.Preferences; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; /** * @see https://stackoverflow.com/a/34616583/230513 */ public class TablePreference { private void display() { JFrame f = new JFrame("TablePreference"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new JScrollPane(new JTable(new PrefModel()) { @Override public Dimension getPreferredScrollableViewportSize() { return new Dimension(128, 32); } })); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } private static class PrefModel extends DefaultTableModel { private static final int DEFAULT = 42; private static final String VALUE_NAME = "value"; private final Preferences p = Preferences.userNodeForPackage(TablePreference.class); public PrefModel() { addColumn("A"); addRow(new Object[]{p.getInt(VALUE_NAME, DEFAULT)}); } @Override public void setValueAt(Object aValue, int row, int col) { super.setValueAt(aValue, row, col); p.putInt(VALUE_NAME, (int) aValue); } @Override public Class getColumnClass(int col) { return getValueAt(0, col).getClass(); } } public static void main(String[] args) { EventQueue.invokeLater(new TablePreference()::display); } }