
假设JTable table已实例化,设置选中表格中的行:
tablesetRowSelectionInterval(int index0,int index1)//选择从 index0 到 index1 之间(包含两端)的行。
tablesetRowSelectionInterval(0,0);//表示选中第一行
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);
}
});
}
}
用按钮事件吧,jTable有自己的鼠标事件,你重写了原来的就没有了,可能会报未知错误
设置一个“添加”按钮,在按钮事件中添加:
用getSelectRow()获取选中行号
用getValueOf(int row,int column)获取某一个数据,用for循环挨个添加好了
if(tableisRowSelected(int row)=true)
if(tableisRowSelected(int row)==true) 才对
最好的写法if(tableisRowSelected(int row))
我看不到你的代码,不能具体的说明,我按照你的描述,给你做了一个实例,你看看,或许对你会有帮助:
import javaawtBorderLayout;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaawteventMouseAdapter;
import javaawteventMouseEvent;
import javaxswingComboBoxModel;
import javaxswingDefaultComboBoxModel;
import javaxswingJComboBox;
import javaxswingJLabel;
import javaxswingJPanel;
import javaxswingJScrollPane;
import javaxswingJTable;
import javaxswingJTextField;
import javaxswingWindowConstants;
import javaxswingtableDefaultTableModel;
import javaxswingtableTableModel;
public class Test extends javaxswingJFrame {
private JPanel jPanel1;
private JTextField jTextField1;
private JLabel jLabel1;
private JComboBox jComboBox1;
private JTable jTable1;
private JScrollPane jScrollPane1;
String colname[] = { "班级", "姓名" };
public static void main(String[] args) {
Test inst = new Test();
}
public Test() {
super();
initGUI();
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstantsDISPOSE_ON_CLOSE);
{
jPanel1 = new JPanel();
getContentPane()add(jPanel1, BorderLayoutCENTER);
jPanel1setLayout(null);
{
jScrollPane1 = new JScrollPane();
jPanel1add(jScrollPane1);
jScrollPane1setBounds(12, 80, 362, 83);
{
TableModel jTable1Model = new DefaultTableModel(
new String[][] {}, colname);
jTable1 = new JTable();
jTable1addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
jTextField1
setText(jTable1getValueAt(
jTable1getSelectedRow(), 1)
toString());
}
});
jScrollPane1setViewportView(jTable1);
jTable1setModel(jTable1Model);
}
}
{
ComboBoxModel jComboBox1Model = new DefaultComboBoxModel(
new String[] { "", "一班", "二班" });
jComboBox1 = new JComboBox();
jPanel1add(jComboBox1);
jComboBox1addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String classname = jComboBox1getSelectedItem()
toString();
// 你可以去查询数据库,从而得到你想要的值,这里我就直接写了
if (classnameequals("一班")) {
String values[][] = { { "一班", "张三" },
{ "一班", "张三2" } };
DefaultTableModel model = (DefaultTableModel) jTable1
getModel();
modelsetDataVector(values, colname);
}
if (classnameequals("二班")) {
String values[][] = { { "二班", "李四i" },
{ "二班", "李四2" }, { "二班", "李四4" } };
DefaultTableModel model = (DefaultTableModel) jTable1
getModel();
modelsetDataVector(values, colname);
}
}
});
jComboBox1setModel(jComboBox1Model);
jComboBox1setBounds(48, 18, 95, 22);
}
{
jLabel1 = new JLabel();
jPanel1add(jLabel1);
jLabel1setText("\u60a8\u9009\u4e2d\u7684\u503c\u4e3a:");
jLabel1setBounds(33, 203, 78, 15);
}
{
jTextField1 = new JTextField();
jPanel1add(jTextField1);
jTextField1setText("");
jTextField1setBounds(128, 203, 221, 22);
}
}
pack();
setSize(400, 300);
} catch (Exception e) {
eprintStackTrace();
}
}
}
以上就是关于java中JTable怎么设置选中表格的其中一行,通过java语言进行选中全部的内容,包括:java中JTable怎么设置选中表格的其中一行,通过java语言进行选中、JAVA点击Jtable表格如何将点击的那一行数据分别输出出来、选中jtable中一行后 如何设置监听得到选中行的数据要一个一个添加到文本框中的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)