这是一个Swing Java 7渲染错误吗?

时间:2011-11-10 15:02:46

标签: java swing java-7

我制作了一个简单的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

  5. 我使用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 个答案:

答案 0 :(得分:9)

如果问题是由图形驱动程序引起的,则设置下面的系统属性之一可能会有所帮助。不太确定Java 7中是否仍支持道具。

sun.java2d.d3d=false
sun.java2d.ddoffscreen=false
sun.java2d.noddraw=true

答案 1 :(得分:1)

我正在使用eclipse helios服务版本2,而java 1.6和我没有得到那个bug;这对我来说可以。但是它不会让我向JList添加参数...这可能是因为我使用的是旧版本的java ...所以基本上我的设置并没有JList的参数它工作...我不知道这是否会帮助你,但这些是我的观察