Java JViewport.BACKINGSTORE_SCROLL_模式和setOpaque(false)

Java JViewport.BACKINGSTORE_SCROLL_模式和setOpaque(false),java,swing,scroll,transparent,Java,Swing,Scroll,Transparent,我的滚动窗格存在透明度/滚动问题。据我所知,这些文档并没有处理这种行为 以下是我的透明文本窗格的代码: textArea.setOpaque(false); scrollPane.setViewportView(textArea); scrollPane.setViewportBorder(border); scrollPane.setOpaque(false); //scrollPane.getViewport().setScrollMode(JView

我的滚动窗格存在透明度/滚动问题。据我所知,这些文档并没有处理这种行为

以下是我的透明文本窗格的代码:

    textArea.setOpaque(false);
    scrollPane.setViewportView(textArea);
    scrollPane.setViewportBorder(border);
    scrollPane.setOpaque(false);
    //scrollPane.getViewport().setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE);
    scrollPane.getViewport().setOpaque(false);
这很好,只是滚动非常缓慢。当
setScrollMode
行未注释时,滚动响应会更灵敏,但透明度会丢失

我有什么办法可以达到双赢的局面吗

编辑:好的,最初的问题没有得到真正的回答,但我确实发现原因实际上是调用了
javax.swing.UIManager.put(“TabbedPane.font”,someCustomFont)
。我漏掉了这个细节,因为我认为它无关紧要。。谁会想到呢。我不知道为什么这会导致缓慢的滚动,但我很高兴发现了问题。

1)
JViewport
默认情况下是透明的

2) 所需设置遵循
JViewpot的方法

JViewport.setScrollMode(JViewport.BLIT_SCROLL_MODE);
JViewport.setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE);
JViewport.setScrollMode(JViewport.SIMPLE_SCROLL_MODE);

3) 举个简单的例子,在滚动过程中没有任何自由或跳跃,这不是我的发现吗?如果我不调用
scrollPane.getViewport().setOpaque(false)
,整个事情都会搞砸吗?2/3)一次调用所有三个视图不会导致使用最后一个调用的视图吗?重要的是,您在JViewport或JTextArea中放置了什么对象,该视图只是一个简单的默认600x500 JTextPane,包含两个完整的文本视图。我没有覆盖视口的绘制方法,也没有必要覆盖。我没有对这种行为的解释,也不介意将其与我的问题中代码类似的答案进行比较。我已经发布了一个。在本例中,您可能会看到,当您拖动滚动条拇指时,它非常缓慢。当添加更多文本时,情况会变得更糟。当更改滚动模式时,惰性减弱,但视口(猜测)不再透明。这些方法适用于添加到JViewport的对象,真的不需要解决为什么其中一个(如果是单独的)冻结JScrollPane的内容,而不是它的内容,以及sombody为JTable实现的原因
将视口内容绘制到屏幕外图像中。
simple不适用于JTextArea