问题描述
我正在使用Java Graphics2D进行学校作业。当我在主要方法的开头添加以下行以提高性能时,
System.setProperty("sun.java2d.opengl","true");
图形面板的边缘被切掉。
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class Main extends JPanel {
public Main() {
JFrame frame = new JFrame("OpenGL off");
frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
setPreferredSize(new Dimension(800,600));
frame.add(this);
frame.pack();
frame.setVisible(true);
}
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(Color.RED);
g2.setstroke(new Basicstroke(5.0f));
g2.draw(new Ellipse2D.Double(0,800,600));
}
public static void main(String[] args) {
// Enables hardware acceleration
System.setProperty("sun.java2d.opengl","true");
new Main();
}
}
该问题出现在Windows上,而不是Mac。
Java版本:Java 11,操作系统:Windows 10
编辑:Java 14也会出现此问题
解决方法
我找到了Oracle的一些文档,说该命令可能不适用于某些硬件配置或Java版本。正如您所说的,这更方便了,您可能只是将其与Java版本错误或不支持此命令。 我建议您阅读以下文档: https://docs.oracle.com/javase/7/docs/technotes/guides/2d/flags.html 您可能需要升级您的Java版本,或者只是使用您的MAC OS ,因为这似乎效果很好。我建议阅读文档,因为其中包含一些扎实的信息。长话短说,这可能是您的问题,您应该进行研究以找到替代方案,或者只是解决。我也是一名刚开始编程生涯的学生,我只是决定尝试解决问题,希望对我有所帮助?