32

我有一个 Jtable,它通过 AbstractTableModel 填充了链表。

我想要做的是当我单击(鼠标左键单击)JTable 中的一行时,链接列表是搜索(在这种情况下它包含电影标题)并在 Jtextboxes 中显示链接列表中的值

我该怎么做呢?

这是代码

我猜它会将所选行中的数据检索到一个数组中,将其拆分,然后将其放入 jtextareas 中。我怎样才能做到这一点 ?

4

6 回答 6

79

我是这样做的:

table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
        public void valueChanged(ListSelectionEvent event) {
            // do some actions here, for example
            // print first column value from selected row
            System.out.println(table.getValueAt(table.getSelectedRow(), 0).toString());
        }
    });

此代码对鼠标单击和键盘上的项目选择作出反应。

于 2015-10-05T05:55:26.410 回答
6
 private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                     
     JTable source = (JTable)evt.getSource();
            int row = source.rowAtPoint( evt.getPoint() );
            int column = source.columnAtPoint( evt.getPoint() );
            String s=source.getModel().getValueAt(row, column)+"";

            JOptionPane.showMessageDialog(null, s);


} 

如果要单击 jtable 中的单元格或行,请使用这种方式

于 2018-02-04T22:14:59.123 回答
5

要了解选择了哪一行,请添加一个ListSelectionListener,如示例中的如何使用表格中所示SimpleTableSelectionDemo。AJList可以直接从链表的toArray()方法中构造出来,你可以添加一个合适的监听器来了解细节。

于 2012-04-12T19:51:33.540 回答
1

我建议为此使用Glazed Lists。它使将数据结构映射到表模型变得非常容易。

要对 JTable 上的鼠标单击做出反应,请使用 ActionListener:JLabel 或 JTable 单元上的 ActionListener

于 2012-04-12T18:23:39.423 回答
1

源代码进行一些增强和编辑:

public class RowSelectionListener implements ListSelectionListener {

    @Override
    public void valueChanged(ListSelectionEvent event) {

        int viewRow = table.getSelectedRow();

        if (!event.getValueIsAdjusting() && viewRow != -1) {

            int columnIndex = 1;

            // Better to access table row using modelRow rather than viewRow
            int modelRow = table.convertRowIndexToModel(viewRow);

            // Access value at selected row at the second column (columnIndex = 1)
            Object modelvalue = table.getModel().getValueAt(modelRow, columnIndex);

            // Not recommended: same as above but access row using viewRow
            Object tablevalue = table.getValueAt(viewRow, columnIndex);

            // Print cell value
            System.out.println(modelvalue + "=" + tablevalue);
        }
    }
}

然后添加ListSelectionListenerJTable

 table.getSelectionModel().addListSelectionListener(new RowSelectionListener());

重要的提示:

viewRowmodelRow在应用时变得有效不同TableRowSorter

于 2021-12-15T19:42:59.143 回答
0

您可以使用该MouseClicked事件:

private void tableMouseClicked(java.awt.event.MouseEvent evt) {
 // Do something.
}
于 2014-06-08T18:09:54.477 回答