JTable - 选定的行单击事件



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

我想做的是当我单击(鼠标左键单击)JTable 中的一行时,链接列表是搜索(在本例中它包含电影标题)并在 Jtextbox 中显示链表中的值

我该怎么做?

这是代码

  • GUI_g:http://pastebin.com/J3qtjn8J
  • 程序表型号:http://pastebin.com/Dwkc9Cz3
  • 加工:http://pastebin.com/qHnkvCbr
  • 主:http://pastebin.com/K4yGYX9H

我猜它会将数据从所选行检索到一个数组中,将其拆分,然后将其放入 jtext区域中。我该怎么做?

这是我是如何做到的:

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());
        }
    });

此代码对鼠标单击和从键盘选择项目做出反应。

 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中的单元格或行,请使用这种方式

若要了解选择了哪一行,请添加一个ListSelectionListener,如示例SimpleTableSelectionDemo中的如何使用表所示。可以直接从链表的 toArray() 方法构造JList,您可以向其添加合适的侦听器以获取详细信息。

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

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);
        }
    }
}

然后将ListSelectionListener添加到JTable

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

重要提示:

viewRowmodelRow在应用TableRowSorter时实际上会有所不同。

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

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

您可以使用

MouseClicked事件:

private void tableMouseClicked(java.awt.event.MouseEvent evt) {
 // Do something.
}

相关内容

  • 没有找到相关文章

最新更新