在另一个JTable的行选择中显示Jtable中的数据

时间:2012-03-03 06:26:04

标签: java mysql swing

我已阅读本网站的其中一个问题。因为我和那个问同样问题的人有同样的问题,我想做一个跟进问题。你如何将其纳入代码:

  • 询问主表其所选行是什么(getSelectedRow())。
  • 将此视图行索引转换为模型行索引(convertRowIndexToModel())。
  • 向模型询问此索引处的数据,并提取数据的ID。该模型应该是您编写的类,扩展AbstractTableModel。
  • 然后从此ID获取要在三个子表中显示的数据,并更改这三个表中的模型(或模型中包含的数据)。

提前致谢。我在这部分课程中遇到了很多困难。因为我只知道

tablePersonalProperty.setModel(DbUtils.resultSetToTableModel(rs)); 

显示表格中的所有项目时。我需要的是显示我从主表中选择的具有相同ID的项目...

2 个答案:

答案 0 :(得分:0)

在我们帮助您编写代码之前,我们需要更多信息。 你的表是否都有完全相同的列? 您是否已经使用自己的自定义数据模型?如果没有,那么你可能需要自己尝试。我不能为你写这个,因为我不知道你需要在你的模型中包含什么。如果您使用的是netbeans,则可以使用表单设计器来帮助您编写表模型。将它添加到JPanel的JFrame后,只需查看JTable的属性即可。无论如何,我最终创建了自己的代码,但Netbeans生成的代码帮助我开始了。

答案 1 :(得分:0)

此示例代码将帮助您执行所需操作,它显示如何在行中的单击事件中将表行从一个表移动到另一个表,

public class InsertRows{
  public static void main(String[] args) {
  new InsertRows();
  }

  public InsertRows(){
  final JTable table, table2;
  final DefaultTableModel model, model2;
  JFrame frame = new JFrame("Inserting rows in the table!");
  String data[][] = {{"Vinod","100"},{"Raju","200"},{"Ranju","300"}};
  String col[] = {"Name","code"};
  Object[][] selrowData = {};   
  model = new DefaultTableModel(data,col);
  model2 = new DefaultTableModel(selrowData,col);

  GridLayout gl = new GridLayout(2,1); 

  table = new JTable(model);
  table2 = new JTable(model2);
  //Insert first position
  model.insertRow(0,new Object[]{"Ranjan","50"});
  //Insert 4 position
  model.insertRow(3,new Object[]{"Amar","600"});
  //Insert last position
  model.insertRow(table.getRowCount(),new Object[]{"Sushil","600"});


    ListSelectionModel cellSelectionModel = table.getSelectionModel();
    cellSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    cellSelectionModel.addListSelectionListener(new ListSelectionListener() {
      public void valueChanged(ListSelectionEvent e) {
        String selectedData = null;
        String selectedData2 = null;
    Object[][] val = {};
        int selectedRow = table.getSelectedRow();
        int selectedColumns = table.getColumnCount();

        model2.insertRow(0,new Object[]{(String) table.getValueAt(selectedRow, selectedColumns-selectedColumns),(String) table.getValueAt(selectedRow, selectedColumns-1) });   
      }
    });

  frame.setLayout(gl);
  frame.add(new JScrollPane(table));
  frame.add(new JScrollPane(table2));
  frame.setSize(600,600);
  frame.setVisible(true);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}