摆动渲染在 JDK 1.8 中显示为已损坏,在 JDK 1.7 中正确
我已经安装了IntelliJ IDEA(13.1.1 #IC-135.480)和JDK 1.8.0(x64),并使用GUI表单设计器生成了一些GUI。
然后我运行了代码,并意识到有些事情不对劲。
这是我的GUI的屏幕截图:
字体的呈现似乎不正常。此外,当我将鼠标移到按钮上时,按钮会丢失其文本。
所以我安装了JDK 1.7.0_40(x64),重新编译了项目并再次运行它。
当我使用JDK 1.7时,会出现以下表单:
渲染似乎没问题,按钮也正常。
因此,我安装了最新的图形和芯片组驱动程序以及更多其他驱动程序,但问题仍然存在。你有没有遇到过这样的Java Swing UI问题?你能帮我解决我的问题吗?任何帮助将不胜感激。
更新:
我创建了一个只有1个JTextArea和1个JButton的小项目,我有同样的渲染问题。
根据Andrew Thompson的说法,我改变了setSize(),我从EDT开始。下面的示例:
package at.maeh.java.client.simpleTextClient;
import javax.swing.*;
import java.awt.*;
public class SimpleClient extends JFrame {
private JPanel panel1;
private JTextArea textArea1 = new JTextArea();
private JButton button1 = new JButton();
public SimpleClient() {
super("SimpleClient");
// Panel
panel1 = new JPanel();
panel1.setLayout(new FlowLayout());
// BUtton
button1.setText("TestButton");
// TextArea
textArea1.setColumns(40);
textArea1.setRows(15);
// Add Components
panel1.add(textArea1);
panel1.add(button1);
// Add to Frame
this.getContentPane().add(panel1);
// pack and set Visible
pack();
setVisible(true);
System.out.println("Constructor EDT: " + SwingUtilities.isEventDispatchThread());
}
public static void main(String[] args) {
SwingUtilities.invokeLater(SimpleClient::new);
System.out.println("Main EDT: " + SwingUtilities.isEventDispatchThread());
}
}
结果是一个简单的JFrame,其中包含组件。
当我写一些文本,或者将鼠标指针放在按钮上时,组件会像这样呈现(文本:testsentence.123;按钮标签:测试按钮)