在JTable中获取选定的单元格值

时间:2015-06-05 19:47:36

标签: java swing jtable

当我双击JTable的单元格时,我希望它获取该单元格的值并将其写入文本字段。我该怎么办?这是我到目前为止所尝试的内容,但我不知道从哪里开始:

 table_1.addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent me) {
            JTable table = (JTable) me.getSource();
            Point p = me.getPoint();
            int row = table.rowAtPoint(p);
            if (me.getClickCount() == 2) {
                textfield.settext(???????????);
            }
        }
    });  

我理解它是如何运作的:

int row = table.rowAtPoint(p);
int column = table.columnAtPoint(p);
textfield.settext(table_1.getValueAt(row, column));

3 个答案:

答案 0 :(得分:4)

Jtable table = (JTable)e.getsource();
int row = table.getSelectedRow();
int column = table.getSelectedColumn();
ObjectType o = (ObjectType)target.getValueAt(row, column) );

这样做。将根据所选的行和列获取JTable中的值,然后将返回的值强制转换为表中的对象类型,并返回行,列的值。这是在你的听众中。

显示在类似问题Possible Dup?

答案 1 :(得分:3)

尝试写下这样的内容:

table.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(final MouseEvent e) {
        if (e.getClickCount() == 1) {
            final JTable jTable= (JTable)e.getSource();
            final int row = jTable.getSelectedRow();
            final int column = jTable.getSelectedColumn();
            final String valueInCell = (String)jTable.getValueAt(row, column);
            textfield.setText(valueInCell);
        }
    });

答案 2 :(得分:2)

您可以使用以下方式获取表格的值:

table.getModel().getValueAt(row, col);

,其中

  • row - 要查询其值的行
  • col - 要查询其值的列
  • table - 您的对象名称(类jTable
  

注意:该列是在表格视图的显示顺序中指定的,而不是在TableModel的列顺序中指定的。这很重要   区别是因为当用户重新排列表中的列时,   视图中给定索引处的列将更改。同时   用户的操作永远不会影响模型的列排序。

此外,我建议您阅读this documentation