5

我在标准 JPanel 内的 JScrollPane 内有一个 TextArea。

    JPanel panelMain = new JPanel();
    panelMain.setBorder(titledBorder1);
    panelMain.setBounds(new Rectangle(2, 5, 970, 700));
    panelMain.setLayout(null);

    JTextArea fieldBody = new JTextArea();
    JScrollPane fieldBodyScrollPane = new JScrollPane(fieldBody);
    fieldBodyScrollPane.setBounds(70, 140, 790, 500);
    panelMain.add(fieldBodyScrollPane);

当我在一行中输入足够多的文本时,会出现水平旋钮 - 到目前为止还不错。但是当我开始左右移动旋钮时,文本变得模糊(见图)。有趣的是,当我上下移动 textarea 时,并没有发生什么奇怪的事情。

水平滚动时jscrollpane中的文本模糊

我使用带有 Unity 的 Ubuntu 12.04。这个图形工件以前从未出现在我面前。任何提示可能是什么问题?

4

3 回答 3

4
import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.border.*;

public class CaseForLayoutsNumber547 {

    CaseForLayoutsNumber547() {
        Border titledBorder1 = new TitledBorder("Case for Layouts #547");
        // START: code snippet variant
        JPanel panelMain = new JPanel(new GridLayout());
        panelMain.setBorder(titledBorder1);

        JTextArea fieldBody = new JTextArea(5,40);
        JScrollPane fieldBodyScrollPane = new JScrollPane(fieldBody);
        panelMain.add(fieldBodyScrollPane);
        // END: code snippet variant
        JOptionPane.showMessageDialog(null, panelMain);
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                new CaseForLayoutsNumber547();
            }
        };
        SwingUtilities.invokeLater(r);
    }
}

我在这个 SSCCE 中没有看到任何滚动工件。你?

于 2012-10-08T12:13:13.267 回答
2

这是@Andrew 的 SSCCE 展示自己;它看起来与AmbienceRadiance相同。

图片

$ lsb_release -a
没有可用的 LSB 模块。
经销商编号:Ubuntu
说明:Ubuntu 12.04.1 LTS
发布时间:12.04
代号:精确
$ java -版本
java版本“1.6.0_24”
OpenJDK 运行时环境 (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK Client VM(build 20.0-b12,混合模式,共享)

附录:仔细查看您的屏幕截图,未能遵守opacity属性可能会导致此类渲染伪影,并且默认设置可能因 Look & Feel 实现而异。

于 2012-10-08T18:04:37.100 回答
2

此问题发生在 OpenJDK(至少 6 和 7;并且至少在 Linux 上)中,而不会发生在 Oracle Java 6 和 7(在 Linux 上)中。

mKorbel 建议的解决方法对我有用:

scrollPane.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);

所以我猜这是 OpenJDK 中的一个错误。

于 2013-04-17T23:50:26.313 回答