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);

1行に十分な数のテキストを入力すると、水平ノブが表示されます。これまでのところ問題ありません。しかし、ノブを左右に動かし始めると、テキストがぼやけます(画像を参照)。興味深いことに、テキストエリアを上下に動かしても奇妙なことは何も起こりません。

水平方向にスクロールするときのjscrollpaneのぼやけたテキスト

UnityでUbuntu12.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で表示されています。アンビエンスでもラディアンスでも同じように見えます。

画像

$ lsb_release -a
利用可能なLSBモジュールはありません。
ディストリビューターID:Ubuntu
説明:Ubuntu 12.04.1 LTS
リリース:12.04
コードネーム:正確
$ java -version
Javaバージョン「1.6.0_24」
OpenJDKランタイム環境(IcedTea6 1.11.4)(6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDKクライアントVM(ビルド20.0-b12、混合モード、共有)

補遺:スクリーンショットをよく見ると、不透明度プロパティを尊重しないと、そのようなレンダリングアーティファクトが発生する可能性があり、デフォルト設定はルックアンドフィールの実装によって異なる場合があります。

于 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 に答える