我正在使用 Java 教程示例来说明如何使用 JScrollPane(带有行/列标题)。该示例使用 JLabel 的子类在视口视图中显示图像。我使用示例代码来显示行/列标题(Rule.java 示例代码)并且对奇怪的结果感到困惑。我终于删除了对 getClipBounds() 的调用(显然用于确定行/列标题的哪个区域可见,仅绘制该区域)并绘制整个标题,问题得到解决。这意味着我现在正在绘制整个区域(在行/列标题和主视口中)。这让我觉得不是最优的。
- 谁能解释为什么 Java 教程示例可以正常工作(除了源与示例中执行的不同)?
- 即使它只是部分可见,我绘制整个窗格是否正确?
- 如何确定整个对象的哪个区域在视口中可见(对于行/列标题和主视口),以便我可以绘制该区域?
更新:
我仍然不知道为什么该示例有效,但我发现如果我使用 JComponent.getVisibleRect() 而不是 Graphics.getClipBounds() 事情似乎按预期工作。不确定这是否是此方法的正确使用。