gpt4 book ai didi

java - Swing 渲染在 JDK 1.8 中出现损坏,在 JDK 1.7 中正确

转载 作者:IT老高 更新时间:2023-10-28 20:25:22 25 4
gpt4 key购买 nike

我已经安装了 IntelliJ IDEA (13.1.1 #IC-135.480) 和 JDK 1.8.0 (x64),并使用 GUI 表单设计器生成了一些 GUI。

然后我运行代码并意识到有些地方不对劲。

这是我的 GUI 截图: Buggy Rendering JDK 1.8.0

Font 的渲染似乎不太好。此外,当我将鼠标移到按钮上时,按钮会丢失其文本。

所以我安装了 JDK 1.7.0_40 (x64),重新编译项目并再次运行。

当我使用 JDK 1.7 时,会出现以下表单: Rendering OK JDB 1.7.0_40

渲染好像没问题,按钮也没问题。

所以我安装了最新的图形和芯片组驱动程序等等,但问题仍然存在。您在使用 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。

SimpleClient -> Screenshot immediately after Start

当我写一些文本,或者将鼠标指针移到按钮上时,组件会像这样呈现(文本:testsentence.123;按钮标签:TestButton)

after writing - or mouse over

最佳答案

对于那些问题还没有解决的人;试试这个解决方案:

在操作系统内部将全局环境变量“J2D_D3D”设置为“false”。据 Sun 介绍,此设置用于在 Java 1.4.1_02 及更高版本中关闭 Java 2D 系统对 Direct3D 的使用。

即:只需创建一个名称为“J2D_D3D”且值为“false”且不带引号的环境变量。

这解决了我的渲染问题,希望它也能解决你的问题。

关于java - Swing 渲染在 JDK 1.8 中出现损坏,在 JDK 1.7 中正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22737535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com