Это ошибка рендеринга Swing Java 7? - PullRequest
9 голосов
/ 10 ноября 2011

Я сделал простое приложение Swing.Но рендеринг ведет себя глючно.Я сделал что-то не так или это ошибка?

Это просто маленький JFrame с текстовым полем, кнопкой и пустым списком.Если я сначала изменю размер окна по горизонтали, а затем наберу текстовое поле, кнопка внезапно исчезнет.

Вот мой код:

public class App extends JFrame {

    public App() {

        JTextField messageFld = new JTextField();
        JButton saveBtn = new JButton("Save");

        JPanel inputPanel = new JPanel(new BorderLayout());
        inputPanel.add(messageFld, BorderLayout.CENTER);
        inputPanel.add(saveBtn, BorderLayout.EAST);

        JList<Data> list = new JList<Data>();
        JPanel panel = new JPanel(new BorderLayout());
        panel.add(inputPanel, BorderLayout.NORTH);
        panel.add(list, BorderLayout.CENTER);

        this.getContentPane().add(panel);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Test application");
        this.pack();
        this.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new App();
            }
        });
    }

}

Вот несколько снимков экрана:

  1. При запуске

    enter image description here

  2. После горизонтального изменения размера

    enter image description here

  3. После ввода нескольких символов в текстовое поле

    enter image description here

  4. После наведения мыши на кнопку

    enter image description here

Я использую Windows 7, Java 1.7.0 и Eclipse Indigo SR1.Я использовал JDK 1.7.0.0 и теперь обновился до JDK 1.7.0.10, но у меня все еще есть та же проблема.

Когда я печатаю системные свойства, я получаю такой результат:

System.out.println(System.getProperty("java.version"));
System.out.println(System.getProperty("java.runtime.version"));

> 1.7.0_01
> 1.7.0_01-b08

Ответы [ 2 ]

9 голосов
/ 10 ноября 2011

В случае, если проблема вызвана вашим графическим драйвером, установка одного из системных свойств ниже может помочь. Не совсем уверен, поддерживаются ли реквизиты в Java 7.

sun.java2d.d3d=false
sun.java2d.ddoffscreen=false
sun.java2d.noddraw=true
1 голос
/ 10 ноября 2011

Я использую Eclipse Helios Service Release 2 и Java 1.6, и я не получаю эту ошибку; Он отлично работает для меня. Однако это не позволит мне добавлять параметры в JList ... это может быть потому, что я использую более старую версию Java ... так что в основном с моей настройкой и без параметров для JList это работает ... Я не уверен, если это поможет вам, но это мои наблюдения

...