【问题标题】:How to force repaint of JTable, JScrollPane?如何强制重绘 JTable、JScrollPane?
【发布时间】:2021-03-31 20:21:01
【问题描述】:

我正在创建一个自上而下的解析器,它根据给定的语法检查给定源代码的语法,然后在一个简单的 GUI 中显示结果。

基本上,用户选择语法和源文件,点击“检查语法”,结果如图所示...

它最初运行良好。但是,在选择不同的文件或更新所选文件时,然后再次单击“检查语法”按钮,在交互后开始发生一些图形问题,例如滚动,调整大小或单击行:

调整窗口大小时问题更加明显:

这是框架的结构:

JFrame frame
  JPanel headerPanel
    ...
  JPanel bodyPanel
    JLabel tableTitle
    JScrollPane tableScrollPane
      JTable table
    JLabel tableSummary

我在出现问题的组件上尝试了诸如revalidate()repaint() 之类的方法,但它们只修复了标签的那些...

我也尝试过使用SwingWorker,但没有解决问题。

以下是可能相关的代码部分:

                ...

                var tableScrollPane = new JScrollPane(table);
                tableScrollPane.setBorder(new MatteBorder(0,1,0,1, palette.get("strongTeal")));
                tableScrollPane.setBackground(palette.get("strongTeal"));
                tableScrollPane.revalidate();
                tableScrollPane.repaint();

                ...

                var bodyPanel = new JPanel();
                bodyPanel.setLayout(new BorderLayout());
                bodyPanel.add(tableTitle, BorderLayout.NORTH);
                bodyPanel.add(tableScrollPane, BorderLayout.CENTER);
                bodyPanel.add(tableSummary, BorderLayout.SOUTH);
                bodyPanel.setBorder(new EmptyBorder(45,45,45,45));
                bodyPanel.revalidate();
                bodyPanel.repaint();

                frame.add(bodyPanel, BorderLayout.CENTER);
                frame.setVisible(true);

                ...

关于如何强制框架或目标组件完全重绘(即忘记以前的状态,只在滚动、调整大小等时显示最新信息),最终克服这些问题的任何想法?谢谢。

【问题讨论】:

    标签: java swing jframe jtable jscrollpane


    【解决方案1】:

    。但是,在选择不同的文件或更新所选文件时,然后再次单击“检查语法”按钮,一些图形问题开始发生

    不要一直创建新组件。旧组件仍添加到框架中。所以现在你有两组组件。

    相反,您可以替换:

    1. JTable 中的数据使用table.setModel( yourTableModel )
    2. JScrollPane 中的组件使用scrollPane.setViewportView( yourTable )

    【讨论】:

      猜你喜欢
      • 2014-04-26
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      相关资源
      最近更新 更多