Java,我做毕业设计遇到了 jtable 问题,如何得到被选中的那一行

Java,我做毕业设计遇到了 jtable 问题,如何得到被选中的那一行,第1张

jTableaddMouseListener(new javaawteventMouseAdapter() {

public void mouseClicked(javaawteventMouseEvent e) {

if(jTablegetValueAt(jTablegetSelectedRow(),0)!=null)

{

StringBuffer s = new StringBuffer ((String)jTablegetValueAtjTablegetSelectedRow(),0)); //获取所选中的行的第一个位置的内容,当然你也可以指定具体的该行第几格

for(int i=1;i<jTable的列数;i++){

sappend(((String)jTablegetValueAtjTablegetSelectedRow(),i));//把后面的几列加进来

}

jtextfieldsetText(stoString());

repaint();

}

});

getTableModel。JTable用来显示和编辑常规二维单元表,JTable类的对象并不存储数据,它只是数据getTableModel可以获得该对象的表格模型。数据由表格模型(TableModel)进行存储,使用JTable类直接创建表格时,只是将数据封装在默认的表格模型中。

这个要从头说起就复杂了。我简单说一下吧。

首先,要把数据从库中取出来,假设你已经会了。

其次,创建一个表格模型,

DefaultTableModel model=new DefaultTableModel();

//创建表头

modelsetColumnIdentifiers(new Object[]{"日期/时间"," *** 作工","产品型号","数量"});

再次,添加数据

while(resultsnext())

{

String dt=resultsgetString("dt");

String name=resultsgetString("name");

String pname=resultsgetString("product");

int i=resultsgetInt("num");

//把以上数据添加到表格模型的一行中

modeladdRow(new Object[]{dt,name,pname,i});

}

最后,用模型生成表格

JTable table=new JTable(model);

当然,还有一些其它的 *** 作,比如把表格显示出来,表格的字体、行高等设置等等,不再一一赘述。

就是用getValueAt(int r, int c)啊!

用户一旦修改了表的数据,你在监听器里,得到那个table的对象,就可以之间用这个getValueAt方法

如果还是修改之前的,可能有几个可能:

1那条数据并没有真正的修改到了table中,这种情况也是最常见的错误

解决方法:

修改数据不能用简单的setValueAt()方法,而是应该对tablemodel里面的数据做修改,然后setModel(Model),这样传回去的table才是真正已经修改过数据的table,否则就不是,这也是大家都用的方法

2自己的监听器写错了,可能在监听器里部分代码有问题

其他,应该没有问题了,你看下吧,估计是你的table数据没有真正的插入到table中,不是真正的修改数据,也就是说,你 没有用到setModel()方法,而是直接在界面上点击修改数据,没有用到监听器去setModel()

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

}

});

}

}

int tableRow = 0;

jTableaddMosueListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e){

if(egetButton() == MouseEventBUTTON3){

tableRow = jTablerowAtPoint(egetPoint());

}

}

}

tableRow就是鼠标右键点击的所在行号

以上就是关于Java,我做毕业设计遇到了 jtable 问题,如何得到被选中的那一行全部的内容,包括:Java,我做毕业设计遇到了 jtable 问题,如何得到被选中的那一行、jtable类中哪个方法可以获得该对象的表格模型、怎样将数据库的数据读取到JTable中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9325127.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存