【发布时间】:2019-11-21 14:00:34
【问题描述】:
我在我的项目上工作,我需要将一行从 JTable 复制到另一个 JTable 中,第二个 JTable 应该只是单行表。我为第一个 JTable 创建了 mouselistener,在双击时它应该复制行并将其插入另一个 JTable,但它不能正常工作,有什么想法可以解决它吗?我从第一个表中的数据库中获取数据。带代码:
public void cputable() {
try {
conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/test","postgres","postgres");
stat = conn.createStatement();
result = stat.executeQuery("SELECT name,bus_speed,socket,cores,chipset,price*1.3 FROM CPU");
cputable.setModel(DbUtils.resultSetToTableModel(result));
result.close();
stat.close();
}
catch (Exception e){
e.printStackTrace();
}
}
这是我尝试复制行的代码:
cputable.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
JTable cputable =(JTable) me.getSource();
int row = cputable.getSelectedRow();
int col = cputable.getColumnCount();
if (me.getClickCount() == 2) {
cputablebottom.repaint();
for(int i = 0; i < col; i++) {
DefaultTableModel model = (DefaultTableModel) cputable.getModel();
List<String>list = new ArrayList<String>();
list.add( cputable.getValueAt(row, i).toString());
model.addRow(list.toArray());
cputablebottom.setModel(model);
}
前后结果:
编辑:
我在代码中重新做了一点,现在它复制了整个列表而不是只复制一行。
cputable.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
JTable cputable =(JTable) me.getSource();
int row = cputable.getSelectedRow();
int col = cputable.getColumnCount();
if (me.getClickCount() == 2) {
cputablebottom.repaint();
DefaultTableModel model1 = (DefaultTableModel) cputable.getModel();
List<String>list = new ArrayList<String>();
model1.addRow(list.toArray());
for(int i = 0; i < col; i++) {
list.add( cputable.getValueAt(row, i).toString());
cputablebottom.setModel(model1);
System.out.println(model1);
System.out.println(list);
}
cputablebottom.setModel(model1);
【问题讨论】:
-
如果您的第二个模型只需要一行,那么为什么不为
JTable创建一个新的TableModel,而不是向现有模型添加新行? -
感谢您的回答!我在编程方面并不资深,我正在努力做到最好! :) 我需要在两者中保留行,我需要稍后将它从第二个 JTable 复制到第三个 JTable :) 还有一个问题,我如何限制 JTable 只显示一行?
-
每次需要将行复制到第二个表时,在第二个表中使用一个新的
TableModel -
感谢您的宝贵时间!在我修复它之前,我似乎必须阅读一些关于 TableModel 的信息:D
-
@MadProgrammer 我编辑了代码,你能看一下吗?
标签: java postgresql swing jtable mouseevent