JAVA点击Jtable表格如何将点击的那一行数据分别输出出来

JAVA点击Jtable表格如何将点击的那一行数据分别输出出来,第1张

JTabel 获取表格中选中的数据, 那么有可以考虑使用下面两种方法来实现

方法一:ListSelectionListener 来获取用户在表格里选中的数据是最方便和最优的.

因为: 支持单选, 也支持多行, 支持键盘上下移动进行选择

方法二: MouseListener 当鼠标点击某行数据后,输出该数据 ,可以实现

不推荐使用MouseListener来获取表格选中数据:

1 不够灵敏, 偶尔会失效, 比如刚打开窗口后 ,有时候迅速点击table .MouseListener 就可能不会有反应...

2  用户选中多行, 比如拖动或者键盘上下移动进行选择时,那么在MouseListener里获取多行比较麻烦..不仅仅需要实现鼠标点击 ,还得需要实现拖动鼠标,释放鼠标 等多个方法,如果完善一点还需要实现键盘事件的方法...

参考代码如下

import java.awt.*

import java.awt.event.*

import javax.swing.*

import javax.swing.event.*

public class TableDemo extends JFrame {

String[] names = { "姓名", "等级" }

String[][] data = { { "张三", "A" }, { "李四", "B" }, { "王五", "C" } }

public TableDemo() {

JTable table = new JTable(data, names)

JScrollPane jsp = new JScrollPane(table)

add(jsp)

setSize(300, 200)

setLocationRelativeTo(null)

setDefaultCloseOperation(EXIT_ON_CLOSE)

// 推荐

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

@Override

public void valueChanged(ListSelectionEvent e) {

if (!e.getValueIsAdjusting()) {

//支持拖动多选

int[] rows = table.getSelectedRows()

// int[] cols = table.getSelectedColumns()//选中的列

for (int i : rows) {

System.out.println("#方法一:\t" + table.getValueAt(i, 0) + "\t" + table.getValueAt(i, 1))

}

//支持单选

// int row=table.getSelectedRow()//选中行

// //int col=table.getSelectedColumn()//选中列

// System.out.println("方法一:"+table.getValueAt(row, 0)+"\t"+table.getValueAt(row, 1))

}

}

})

table.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

//单选

int row = table.rowAtPoint(e.getPoint())// 选中行

// int col =table.columnAtPoint(e.getPoint())//选中列

System.out.println("*方法二:\t" + table.getValueAt(row, 0) + "\t" + table.getValueAt(row, 1))

}

})

}

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

new TableDemo().setVisible(true)

}

})

}

}

在面板上用table显示数据库的中的信息

代码如下:

try{

             Database db = new Database()

             db.conn()

             Statement stmt = db.conn.createStatement()

             ResultSet rset = stmt.executeQuery("SELECT * FROM goods")//前面的为数据库部分(每个人视情况而定)

             DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel()

             dtm.setRowCount(0)

             while (rset.next()) {

                 Object[] row = {

                     rset.getString(1),

                     rset.getDouble(2),

                     rset.getDouble(3),//这三个为表各个字段的值,从数据库中得到的

                }

                 dtm.addRow(row)

             }

             rset.close()

             stmt.close()

             db.closeConn()

         } catch (ClassNotFoundException ex) {

             Logger.getLogger(Admin.class.getName()).log(Level.SEVERE, null, ex)

         } catch (SQLException ex) {

             Logger.getLogger(Admin.class.getName()).log(Level.SEVERE, null, ex)

         }


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6425169.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-22
下一篇 2023-03-22

发表评论

登录后才能评论

评论列表(0条)

保存