这是一个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 list = new JList(); 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. 在启动时

    在此处输入图像描述

  2. 水平resize后

    在此处输入图像描述

  3. 在文本字段中打了几个字符后

    在此处输入图像描述

  4. 将鼠标移到按钮上后

    在此处输入图像描述

我使用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 

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

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

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