【问题标题】:Java swing components refreshing [duplicate]Java swing组件刷新[重复]
【发布时间】:2012-03-15 21:12:19
【问题描述】:

可能重复:
Java Swing revalidate() vs repaint()

我正在开发一个数据库应用程序 (Java + oracle 11g),我需要知道什么以及为什么需要重新验证/重新绘制才能获得正确的显示。我有以下组件:

      JFrame {
          JCardPanel{
             //card1:
             JPanel {
                JScrollPane1 {
                     { JTable1 }
                }
                JScrollPane2 {
                     { JTable2 }
                }
             }
            //card2:
            JDialog{
               ( login window )
            }
      }

按此顺序“嵌套”。 JTables 的内容经常变化,我不知道如何正确显示它们 - 我不是挥杆专家,所以有人可以给我一个提示,我需要刷新什么,如何去做并解释正在发生的事情。

【问题讨论】:

  • why I need to revalidate/repaint... 在这种情况下永远不会

标签: java swing


【解决方案1】:

如果您的 TableModel 已正确创建,那么您所要做的就是更新模型中的数据,视图将显示更改。如果您使用 DefaultTableModel,这会为您处理好。如果您使用基于 AbstractTableModel 的模型,则必须注意在对模型进行任何更改后调用适当的 fireTableXXX(...) 方法。 AbstractTableModel API 将向您展示有关这些方法的更多信息,JTable tutorial 也将向您展示。

【讨论】:

    【解决方案2】:

    除了更新模型的较早建议之外,我还要补充一点,如果您的表被修改以便一次添加/删除数千行,那么您将通过调用 fireTableDataChanged() 在更新表后节省一些额外的绘画散装。

    【讨论】:

    • ehhh... no: Bulk or not,只要修改是封闭块,更具体的fire方法更好(允许表格保持f.i. selection的状态)
    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 2017-11-10
    • 2011-12-25
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多