JTabel 获取表格中选中的数据, 那么有可以考虑使用下面两种方法来实现
方法一:ListSelectionListener 来获取用户在表格里选中的数据是最方便和最优的
因为: 支持单选, 也支持多行, 支持键盘上下移动进行选择
方法二: MouseListener 当鼠标点击某行数据后,输出该数据 ,可以实现
不推荐使用MouseListener来获取表格选中数据:
1 不够灵敏, 偶尔会失效, 比如刚打开窗口后 ,有时候迅速点击table MouseListener 就可能不会有反应
2 用户选中多行, 比如拖动或者键盘上下移动进行选择时,那么在MouseListener里获取多行比较麻烦不仅仅需要实现鼠标点击 ,还得需要实现拖动鼠标,释放鼠标 等多个方法,如果完善一点还需要实现键盘事件的方法
参考代码如下
import javaawt;import javaawtevent;
import javaxswing;
import javaxswingevent;
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);
// 推荐
tablegetSelectionModel()addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (!egetValueIsAdjusting()) {
//支持拖动多选
int[] rows = tablegetSelectedRows();
// int[] cols = tablegetSelectedColumns();//选中的列
for (int i : rows) {
Systemoutprintln("#方法一:\t" + tablegetValueAt(i, 0) + "\t" + tablegetValueAt(i, 1));
}
//支持单选
// int row=tablegetSelectedRow();//选中行
// //int col=tablegetSelectedColumn();//选中列
// Systemoutprintln("方法一:"+tablegetValueAt(row, 0)+"\t"+tablegetValueAt(row, 1));
}
}
});
tableaddMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//单选
int row = tablerowAtPoint(egetPoint());// 选中行
// int col =tablecolumnAtPoint(egetPoint());//选中列
Systemoutprintln("方法二:\t" + tablegetValueAt(row, 0) + "\t" + tablegetValueAt(row, 1));
}
});
}
public static void main(String[] args) {
EventQueueinvokeLater(new Runnable() {
public void run() {
new TableDemo()setVisible(true);
}
});
}
}
JScrollPane scrollPane = new JScrollPane(table);
把table换成你的table,之前我使用过这玩意,他不设置个ScrollPane到界面上,无法显示出数据。你在Frame里面不需要添加JTable,只要把这个scrollPane设置进去就好了
假设你那个JTable叫 jTable
jTablegetValueAt(int i, int m);
i是行 m是列
比如你要取选中的那行的第一列数据
jTablegetValueAt(jTablegetSelectedRow(), 1);
jTablegetSelectedRow()这个返回的就是你选中行的索引哈
从0开始排还是从1我忘了你试下就晓得了哈
JTable table = new JTable();
tablegetRowCount();
tablegetColumnCount()
这样可以取得一个table的所有行和列。
tablegetSelectedColumn();
tablegetSelectedRow();
可以得到你选中的单无格。
tablegetSelectedColumns();
tablegetSelectedRows();
可以取得你复数选择的行和列。
找API看一下,都 能找得到。
就是用getValueAt(int r, int c)啊!
用户一旦修改了表的数据,你在监听器里,得到那个table的对象,就可以之间用这个getValueAt方法的
如果还是修改之前的,可能有几个可能:
1那条数据并没有真正的修改到了table中,这种情况也是最常见的错误
解决方法:
修改数据不能用简单的setValueAt()方法,而是应该对tablemodel里面的数据做修改,然后setModel(Model),这样传回去的table才是真正已经修改过数据的table,否则就不是,这也是大家都用的方法
2自己的监听器写错了,可能在监听器里部分代码有问题
其他,应该没有问题了,你看下吧,估计是你的table数据没有真正的插入到table中,不是真正的修改数据,也就是说,你 没有用到setModel()方法,而是直接在界面上点击修改数据,没有用到监听器去setModel()
参考代码如下:
//单行
int getSelectedColumn()
返回第一个选定列的索引;如果没有选定的列,则返回 -1。
int getSelectedRow()
返回第一个选定行的索引;如果没有选定的行,则返回 -1。
Object getValueAt(int row, int column)
返回 row 和 column 位置的单元格值。
//多行
int[] getSelectedColumns()
返回所有选定列的索引。
int[] getSelectedRows()
返回所有选定行的索引。
Object getValueAt(int row, int column)
返回 row 和 column 位置的单元格值。
以上就是关于JAVA点击Jtable表格如何将点击的那一行数据分别输出出来全部的内容,包括:JAVA点击Jtable表格如何将点击的那一行数据分别输出出来、怎样将oracle数据库中某个表的数据读取出来,然后在java的JTable中显示出来、得到JTable里当前的选定行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)