【问题标题】:how to fill JTextFields with the columns of a JTable search?如何用 JTable 搜索的列填充 JTextFields?
【发布时间】:2010-09-12 23:19:02
【问题描述】:

我有一个主/明细表单,顶部有一个 JTable,所有 JTextField 对应于 JPanel 下方。我正在尝试在 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() 然后用其列值填充所有 JTextField 吗?

另外,如何以编程方式突出显示所选行?假设,在我的搜索找到列值之后,在 JTable 中突出显示该行

【问题讨论】:

  • 重新格式化的代码;如果不正确,请恢复。

标签: java swing search jtable jtextfield


【解决方案1】:

我将从教程文章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();
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2016-05-25
    • 2015-06-17
    • 1970-01-01
    • 2012-04-24
    • 2016-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多