在 Java 中启用 OpenGL 会使带有图形的 JPanel 的边缘被切断
Enabling OpenGL in Java makes edges of JPanel with graphics get cut off
我正在为一项学校作业使用 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, 0, 800, 600));
}
public static void main(String[] args) {
// Enables hardware acceleration
System.setProperty("sun.java2d.opengl", "true");
new Main();
}
}
问题出现在 Windows 而不是 Mac。
Java版本:Java11,OS:Windows10
编辑:Java 14
也会出现此问题
我发现 Oracle 的一些文档说 此命令可能不适用于某些硬件配置或 java 版本。 它更方便,因为您说,您可能只是将它与错误版本的 Java 或不支持此命令的版本一起使用。 我建议您查看此文档: https://docs.oracle.com/javase/7/docs/technotes/guides/2d/flags.html
您可能需要 升级您的 Java 版本 或者 使用您的 MAC OS 因为这似乎工作顺利。我建议阅读文档,因为它有一些可靠的信息。长话短说,这可能是您的问题,您应该进行研究以找到替代方案或解决问题。我也是一名处于编程生涯初期的学生,我刚刚决定尝试解决一个问题,希望我能帮到你?
我正在为一项学校作业使用 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, 0, 800, 600));
}
public static void main(String[] args) {
// Enables hardware acceleration
System.setProperty("sun.java2d.opengl", "true");
new Main();
}
}
问题出现在 Windows 而不是 Mac。
Java版本:Java11,OS:Windows10
编辑:Java 14
也会出现此问题我发现 Oracle 的一些文档说 此命令可能不适用于某些硬件配置或 java 版本。 它更方便,因为您说,您可能只是将它与错误版本的 Java 或不支持此命令的版本一起使用。 我建议您查看此文档: https://docs.oracle.com/javase/7/docs/technotes/guides/2d/flags.html 您可能需要 升级您的 Java 版本 或者 使用您的 MAC OS 因为这似乎工作顺利。我建议阅读文档,因为它有一些可靠的信息。长话短说,这可能是您的问题,您应该进行研究以找到替代方案或解决问题。我也是一名处于编程生涯初期的学生,我刚刚决定尝试解决一个问题,希望我能帮到你?