Search code examples
javaswingjscrollpaneubuntu-12.04visual-artifacts

Moving JScrollPane horizontally results in blured text


I have a TextArea inside JScrollPane inside standard JPanel.

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

When I type enough text in a single row the horizontal knob appears - so far good. But when I start moving the knob left and right, the text gets blured (see image). Interestingly, nothing weird happens when I move the textarea up and down.

blured text in jscrollpane when scrolling horizontally

I use Ubuntu 12.04 with Unity. This graphic artifact never appeared to me before. Any hints what could be the problem?


Solution

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

    I do not see any scroll artifacts in this SSCCE. Do you?