我想从Jtable中获取值,并且我使用getvalueat尝试了它但是每当我尝试从JTable获取值时它只从所选行的第一列获取值,我需要获取所有值来自我选择的Jtable.你能帮我解决这个问题
here is my code:
class GetTableValue implements ActionListener{
public void actionPerformed(ActionEvent e){
AbstractButton button = (AbstractButton)e.getSource();
if(e.getActionCommand().equals(button.getActionCommand)){
int row = table.getSelectedRow();
int col = table.getSelectedColumn();
Object data = (Object)table.getValueAt(row, col);
JOptionPane.showMessageDialog(null, data);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的动作事件,其中所选表的值显示在JOptionPane中,不幸的是它只显示一个值(这是您已选择的值)而不是整行.
这段代码是我的Jbutton调用action事件的(我已经从JTable中排除了我的代码,因为它从我的数据库中获取Jtable值)
ActionListener tableAction = new GetTableValue();
buttonEdit = new JButton("EDIT");
buttonEdit.addActionListener(tableAction);
Run Code Online (Sandbox Code Playgroud)
代码简单明了,我还搜索G先生(google)关于获取行的一个很好的教程,遗憾的是没有一个很好的教程来获取Jtable值(每行).
Raj*_*hri 11
如果您想要所选行中的所有值,请尝试使用此代码.
int row = jTable1.getSelectedRow();
int column = jTable1.getColumnCount();
for(int i = 0; i < column; i++) {
System.out.println(jTable1.getValueAt(row, i));
}
Run Code Online (Sandbox Code Playgroud)
无论jtable中有多少列,您都可以获得所选行的所有值
如果你想要jtable的所有值,那么试试:
int row = jTable1.getRowCount();
int column = jTable1.getColumnCount();
for (int j = 0; j < row; j++) {
for (int i = 0; i < column; i++) {
System.out.println(jTable1.getValueAt(j, i));
}
}
Run Code Online (Sandbox Code Playgroud)
是的,您可以Object[]用来存储值.例如:
Object[] val = new Object[column];
for (int k = 0; k < val.length - 1; k++) {
for (int j = 0; j < row; j++) {
for (int i = 0; i < column; i++) {
val[k] = jTable1.getValueAt(j, i);
System.out.println(val[k]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
getValueAt将返回单元格的值(在行/列).除非你的表模型支持它,否则没有方便的方法(超出你的工作)在单个请求中获取整行.
另外,请记住,如果表被排序或过滤,模型索引将与视图不匹配,您需要先转换它们,使用convertRowIndexToModel和convertColumnIndexToModel
UPDATE
唯一的方法是,如果您使用的表模型具有getRow(或等效的)方法.如果不知道如何将数据存储在表格模型中,那么几乎不可能给出准确的答案,但一般的想法是......
public class MyAwesomeTableModel extends AbstractTableModel {
// All the usual stuff...
public MyRowData getRowAt(int index) { ... }
}
Run Code Online (Sandbox Code Playgroud)
现在,MyRowData是您创建的表数据的实现.它可以(优选地)单个Object或在DefaultTableModel对象阵列的情况下.
class GetTableValue implements ActionListener{
public void actionPerformed(ActionEvent e){
AbstractButton button = (AbstractButton)e.getSource();
if(e.getActionCommand().equals(button.getActionCommand)){
int row = table.convertRowIndexToModel(table.getSelectedRow());
MyAwesomeTableModel model = (MyAwesomeTableModel)table.getModel();
MyRowData data = model.getRowAt(row);
JOptionPane.showMessageDialog(null, data);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这完全取决于您TableModel如何实现自己以及如何实现行数据,但这是一般的jist
| 归档时间: |
|
| 查看次数: |
62887 次 |
| 最近记录: |