我有一个主/详细信息表单,顶部有一个JTable,以及JPanel下面对应的所有JTextFields。我正在尝试在JTable中进行搜索,以便在选择正确的行时,可以使用列值填充所有JTextField。我不知道如何以编程方式调用行来执行此操作。怎么做?
这是我用来搜索的代码:
int rows = (masterTable.getModel()).getRowCount();
final int colCedula = 1; //columna de la CEDULA
final int colRuc = 11; //columna de RUC
String value = null ;
for(int i=0; i
value = (String) (masterTable.getModel()).getValueAt(i, colCedula);
if (value.equals(this.txt_BuscaCliente.getText())) {
//CODE FOR FILLING JTEXTFIELDS
}
如果搜索找到列值并停止循环,我可以只写入 // CODE 部分masterTable.getSelectedRow()然后用其列值填充所有JTextFields ???
另外,如何以编程方式突出显示选中的行?让我们说,在我的搜索找到列值后,在JTable中突出显示该行
答案 0 :(得分:2)
我将从教程文章How to Use Tables: User Selections中的示例开始,以了解列表选择事件。给定SINGLE_SELECTION
模型,您不必搜索;只需填写所选行的文本字段即可。或者,您可以在表格模型中对单元格进行编辑,您根本不必复制它们。
附录:
另外,如何以编程方式突出显示选中的行?
不要搜索,而是让ListSelectionListener
的实施告诉你用户做出了哪些选择。在引用的example中,修改RowListener
,如下所示,以遍历所选行中的列。
private class RowListener implements ListSelectionListener {
@Override
public void valueChanged(ListSelectionEvent event) {
if (!event.getValueIsAdjusting()) {
for (int c : table.getSelectedRows()) {
int row = table.convertRowIndexToModel(c);
TableModel model = table.getModel();
for (int col = 0; col < model.getRowCount(); col++) {
System.out.println(model.getValueAt(row, col));
}
System.out.println();
}
}
}
}