gpt4 book ai didi

java - 动态 JTable - 从所有行获取数据

转载 作者:行者123 更新时间:2023-11-30 06:51:13 24 4
gpt4 key购买 nike

我通过单击按钮动态地将行添加到 JTable。如何保存MySQL中所有行的数据?我可以保存所选行的数据,但我需要保存用户添加的所有行的数据。 我使用下面的代码从行中获取值:

 pcon = model.getValueAt(selectedRowIndex,0).toString();
email = model.getValueAt(selectedRowIndex,3).toString();
mob = model.getValueAt(selectedRowIndex,4).toString();
tel = model.getValueAt(selectedRowIndex,5).toString();
ext = model.getValueAt(selectedRowIndex,6).toString();
posi = model.getValueAt(selectedRowIndex,1).toString();
dep = model.getValueAt(selectedRowIndex,2).toString();

如何移动其他行?

最佳答案

您可以使用从 DefaultTableModel 扩展的自定义表模型以及您自己的数据对象来实现此目的。

请参阅下面的示例。标志“addedLater”可用于区分动态数据和初始数据。

package test;

import java.awt.BorderLayout;
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;

public class JTabeGetRowsFromTable {

static String []columnNames = {
"Name",
"Age",
"Country"
} ;
Vector<Student> students = new Vector<Student> () ;

Vector<Student> buildInitialData (){
students.add(new Student("X", 18, "US")) ;
students.add(new Student("Y", 19, "US")) ;
students.add(new Student("Z", 20, "US")) ;

return students ;
}

Student getNewStudent (){
return new Student("A", 21, "Canada", true) ;
}

protected void buildAndGetTableData (){
JTable table = new JTable () ;

CustomTableModel ctm = new CustomTableModel(buildInitialData()) ;
ctm.setColumnIdentifiers(columnNames);
table.setModel (ctm) ;


JFrame frame = new JFrame () ;
frame.add(new JScrollPane(table), BorderLayout.CENTER) ;

JButton btnAddRow = new JButton ("Add Row");
btnAddRow.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
ctm.addARow(getNewStudent());
}
});
frame.add(btnAddRow, BorderLayout.SOUTH);

frame.setSize(500, 500);
frame.setVisible(true);
}

private static class Student {
String name;
int age;
String country ;
boolean addedLater = false;

public Student (String name, int age, String country){
this(name, age, country, false) ;
}

public Student (String name, int age, String country, boolean addedLater){
this.name = name ;
this.age = age ;
this.country = country ;
}
}



private class CustomTableModel extends DefaultTableModel{

/**
*
*/
private static final long serialVersionUID = -8119518861817992201L;

private Vector<Student> data ;

public CustomTableModel (Vector<Student> data){
this.data = data ;
}

@Override
public Object getValueAt(int row, int column) {
if (data != null && row < data.size()){
Student student = (Student)data.get(row) ;
switch (column){
case 0:
return student.name ;
case 1:
return student.age ;
case 2:
return student.country;
default:
return null ;

}
}

return null ;
}

@Override
public int getRowCount() {
if (data != null){
return data.size();
}
return 0 ;
}

public void addARow (Student student){
data.add(student) ;
fireTableDataChanged();
}
}

public static void main (String args[]){
JTabeGetRowsFromTable test = new JTabeGetRowsFromTable () ;
test.buildAndGetTableData();
}

}

关于java - 动态 JTable - 从所有行获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42734401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com