从JTable读取数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从JTable读取数据相关的知识,希望对你有一定的参考价值。
我需要从BookInfo表中获取BookID。当我按下ADD按钮时,会弹出预约窗口,并在表格中写入BookID,颁发日期和返回日期。所以我需要将BookID作为Object传递给Reservation。
我尝试创建一个新的图书信息实例,或者将一个字符串传递给预订...
//for BookInfo:
public void addRow(Object[] objToAdd)
{
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addRow(objToAdd);
}
...
JButton btnAdd = new JButton("Add");
btnAdd.setBorder(new BevelBorder(BevelBorder.RAISED, null, null, new Color(0, 0, 0), new Color(0, 0, 0)));
btnAdd.setOpaque(true);
btnAdd.setFont(new Font("American Typewriter", Font.PLAIN, 18));
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Reservation.reserve(/*Object bookID*/);
}
});
String[] columnNames = {" Book ID", " Title ", " Author", " Genre", " Date Published ", " Availability"}; // table layout
//for Reservation:
public void reserve(Object[] bookID)
{
String issuedDate = new SimpleDateFormat("yyyy.MM.dd").format(new Date());
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE, 30);
String returnDate = new SimpleDateFormat("yyyy.MM.dd").format(c);
String[]resInfo = {"Book ID" , issuedDate, returnDate};
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addRow(resInfo);
}
答案
我不确定我了解您的用户界面是什么样的,您想要的行为或当前实施的内容。请在您的描述中更加清楚,并在提问时提供所有相关代码;它不能从创建JButton的时间和地点以及您在该范围内获得的信息中获得,这是回答您的问题所需的一些最重要的信息。
假设您通过遍历表模型并为每一行创建一个按钮来渲染表,那么您已经将actionListener作用域中的BookID作为其中一列的值。您只需将其添加到您的侦听器代码中即可。
类似的替代方法涉及使用按钮的actionCommand将String数据与按钮相关联。然后,您可以从调用actionPerformed方法的ActionEvent中检索此信息。 Here's one example。但我认为没有理由在这里使用这种方法。它只是增加了复杂性,上面的解决方案更加简单和自然。
如果我对你如何创建表的假设是错误的,你可以附加一个mouseListener而不是一个actionListener,比如here,这样你就可以从事件中获取行并访问相关列。
另一答案
您可以使用以下代码来读取所有jtable数据
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
Vector data = model.getDataVector();
for (Object data1 : data) {
System.out.println(data1);
}
以上是关于从JTable读取数据的主要内容,如果未能解决你的问题,请参考以下文章