如何将数组值加载到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);
}
I have included the main points of my code, hope it is sufficient to view!
对于少量数据,请考虑
java.util.prefs.Preferences
.
您能为我提供一些使用示例吗?
Several examples are examined in the Preferences API
Overview
and the example cited here
(API and
code).
Alternatively, consider javax.jnlp.PersistenceService
, cited
here, “for applications that are
running in the restricted execution environment.”
这个最小的示例通过将先前保存的值添加到表中并覆盖表模型的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);
}
}
我需要一些帮助。是为了我的学校项目。仅供参考,我使用过的一些符号: 我已经包括了我的代码要点,希望足以查看!
问题内容: 在我从事的一个项目中,我有几个不同的过程。我一直在代码编辑器中为该特定过程打开和关闭选项卡(java文件)。每个进程几乎总是使用相同的Java文件。 我想知道是否可以将打开的文件保存为工作集的一部分,以便我可以选择所需的工作集并打开需要使用的所有Java文件。当前,工作集只是将树设置为这些文件,但是我希望它也能打开我需要的文件。 我希望这是有道理的… 问题答案: Mylyn应该是您的答
我试图传入一个JTable对象,它有DiscountID和Name列。我基本上是在尝试获取JTable a(折扣ID)中选择的第一列的一行,以及在循环中与JTable B中选择的记录相关的这组数据。 我现在的问题是,因为最初我必须将其设置为0,以避免出现但当我运行程序时,JTable B将显示与JTable A中的第一条记录相关的信息,而不需要我选择任何数据。我不想在JTTable B中显示任何信
问题内容: 我正在做一个项目。它只是显示任务列表并向其中添加新任务。我有3个班级。一种用于添加,一种用于查看,一种用于保存所有信息(或者我认为)。 我的列表中已经有2个任务,它们显示正确。 问题是,当我 添加 新任务时,它不会在视图中显示。我尝试了许多可能的解决方案: 只需将项目添加到列表 创建一个新列表,其中包含旧列表中的项目并重建适配器; 使用沿着与附加()命令; 等等 这是我的代码,有点混乱
这是所有新react开发人员的一个普遍问题,但不知何故,我无法理解可用解决方案背后的逻辑。我试图使用钩子更新状态变量,并尝试它读取更新后的值,但它总是返回以前的值而不是新值。下面是我代码执行的顺序。 单击按钮时,它执行以下代码并更新状态,但显示旧值。 控制台日志: 单击第一个按钮: 单击的ID:0 AccountID:0 单击的ID:1 AccountId:0 谁能告诉我这种行为背后的原因和如何解
使用Struts 1.3 我有一个带有用户名、密码的登录表单,还有一个带有一些值的下拉列表,比如English、Deutsh等等。提交表单时,需要从下拉列表中保留最后一个值。 遵循代码示例。 JSP代码: 现在,此JSP代码生成以下下拉列表: struts配置。xml 问题: 现在的问题是,当我输入无效的用户名、密码并选择德语时。最后选择的语言应保持不变,并显示在下拉列表中。但下拉列表已初始化,值