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

写了一点,但是selection一直都是-1,给跪了,求大佬... 写了一点,但是selection一直都是-1,给跪了,求大佬 展开
 我来答
雪飞潇潇
2018-12-17 · TA获得超过6274个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:866万
展开全部

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);
}
});
}
}
百度网友762f74c
2018-12-17 · 超过66用户采纳过TA的回答
知道小有建树答主
回答量:303
采纳率:52%
帮助的人:51万
展开全部
先用table.getSelectedRows( )获取用户所选中的行,返回值是一个int[ ],只取下标为0的即可。
然后再利用table.getValueAt(int row, int columns )方法获取不同列的值。
当然,你要给table注册个事件监听器,当表格被点击时使用如上方法显示各列值。

如:
JTextArea text = new JTextArea()
//文本域显示表格选中行的第一列数据库
text.setText(table.getSelectedRows( )[0] , 0);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沉绪员
2018-12-17 · TA获得超过131个赞
知道小有建树答主
回答量:242
采纳率:65%
帮助的人:38万
展开全部
额 好久没写这个了,在那个mouseevent对象里肯定能获取到需要的信息
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式