【问题标题】:Java, jTable searchJava、jTable 搜索
【发布时间】:2020-10-12 15:05:12
【问题描述】:

这是 NetBeand GUI 代码。我特别需要帮助。 如何让这段代码在被询问的元素中追加整行到 TextArea:

String trener1 = jTextField9.getText();
    DefaultTableModel model = (DefaultTableModel)jTable1.getModel();
    int mCol = model.getColumnCount();
    int mRow = model.getRowCount();
    for(int i = 0; i < mCol; i++){
        for(int j = 0; j < mRow; j++){
            if(jTable1.getModel().getValueAt(i, j).equals(trener1)){
                jTextArea1.append(model.getValueAt(i).toString()+ "\n");
            }
        }
    }

代码应该这样做:我有一个健身房成员列表。关于他们的信息在表格中,他们的名字,年龄,导师。当我在一个 TextField 中键入讲师的姓名时,我希望拥有该讲师的所有成员的姓名都附加到 TextArea。 和他们的年龄一样。

【问题讨论】:

  • 不要描述表中的数据——描述可能不明确。只需发布数据样本就更清楚了。您的代码也没有说明教练与健身房成员的关系。有导师专栏吗?是用 id 或名字来指代讲师还是什么?如果你想要一个好的答案,你需要改进这个问题。
  • 教师在表中有一列。 - 所以你编写一个循环来检查每一行的教师(你还没有遍历这些列)。当您找到匹配项时,您会从当前行的每一列中获取其他数据。
  • 你在说什么?您自己的代码已经有了答案。您可以使用 getValueAt() 从表模型中获取数据。您知道哪一行匹配,因为那是教师姓名匹配的索引。
  • 如果此代码有效 - 并且您已收到有关如何改进代码的建议。我还没有看到您更新代码以显示您尝试过的内容。编码是关于逻辑的。您不会从测试书中学习逻辑。如果讲师姓名仅包含在单个列中,是否在逻辑上测试所有列的名称?你让你的代码太复杂了。你检查每一行的教练,然后当你找到教练时做一些事情。
  • 当我使用 getValueAt() 时,它告诉我它不接受 int 类型 - 不知道你在暗示什么。这两个参数是 int 值。如果你有问题。然后发布实际的错误消息和导致问题的语句。如果您需要更多帮助,请发布正确的 minimal reproducible example 来展示问题。

标签: java swing user-interface netbeans


【解决方案1】:

就是这样。解决了。​​

String trener1 = jComboBox5.getSelectedItem().toString();
    DefaultTableModel model = (DefaultTableModel)jTable1.getModel();
    int Row = model.getRowCount();
    for(int i = 0; i < Row; i++){
            if(jTable1.getModel().getValueAt(i, 8).equals(trener1)){
                jTextArea1.append(model.getValueAt(i, 1).toString());
            }
    }

【讨论】:

  • 我希望你现在明白为什么我们解释了解决问题背后的逻辑,而不仅仅是为你编写代码。你正在上课。你的目标是学习。你边做边学。现在唯一的建议是您可能不想对这些列号进行硬编码。将它们放在变量中并使用该变量,这样如果您将来更改表模型,您的代码就不会中断。
猜你喜欢
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 2021-03-04
相关资源
最近更新 更多