在文本字段中设置行数据

时间:2014-09-17 06:17:17

标签: java swing jtable

我已经从摆动的表格的选定行中获取数据,现在我需要在不同的文本字段中设置这些数据。

我添加了鼠标监听器。

m_tblHistory.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            onSelectedRow();
            super.mouseClicked(e);
        }
    });    

方法onSelectedRow();

@SuppressWarnings({ "unchecked", "rawtypes" })
protected void onSelectedRow() {
    DefaultTableModel model = (DefaultTableModel) m_tblHistory.getModel();

    int intRow = m_tblHistory.getSelectedRow();
    int intColumn = m_tblHistory.getColumnCount();

    Vector vecRow = new Vector();
    for (int i = 0; i < intColumn; i++) {
        vecRow.add(model.getValueAt(intRow, i));
        System.out.println("aaaaa = " + m_tblHistory.getModel().getColumnName(i));
    }

    onSetData(vecRow);
}

现在在onSetData方法中,我需要将数据设置为不同的文本字段。一种方法是我可以对其进行硬编码以获取与个人ID相对应的数据,或者是否有其他方法可以执行此操作或存在?

1 个答案:

答案 0 :(得分:0)

  

我添加了鼠标监听器。

MouseListener不是听取选择更改的正确选择。如果您想要监听行选择更改,则应将ListSelectionListener附加到表ListSelectionModel

JTable table = new JTable();
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
     @Override
     public void valueChanged(ListSelectionEvent e) {
         // your code here
     }
 });

请参阅Users Selections教程的How to Use Tables部分中的详细信息。

  

一种方法是我可以对其进行硬编码以获取与个人ID相对应的数据,还是有其他方法可以执行此操作或是否存在?

是的,还有另一种更好,更优雅的方式:实施自己的TableModel。您可以使用AbstractTableModel作为基础。见Creating a Table Model