gpt4 book ai didi

Mac 操作系统不支持 Java 翻页?

转载 作者:行者123 更新时间:2023-11-30 09:54:48 25 4
gpt4 key购买 nike

我希望之前有人偶然发现了以下问题。

我的 Java 应用程序在 Mac 上有图形性能问题,所以我做了一个简单的测试应用程序(代码如下)。当我在 Windows 上运行它时,控制台告诉我:

GraphicsConfiguration flipping? true
BufferStrategy flipping? true

当我在 Mac OS 上运行完全相同的代码时,我得到:

GraphicsConfiguration flipping? true
BufferStrategy flipping? false

这是否意味着在 Mac OS 上,窗口应用程序根本不支持翻页?有什么技巧可以在 Mac OS 上进行翻页而不用全屏吗?

非常欢迎大家指点,
马蒂斯

在 Windows XP 和 Mac OS 10.5 上使用 JDK 1.6。

代码:

import java.awt.image.BufferStrategy;
import javax.swing.*;
import java.awt.*;

public class Test {
int width = 640;
int height = 480;

GraphicsEnvironment graphEnv = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice graphDevice = graphEnv.getDefaultScreenDevice();
GraphicsConfiguration graphicConf = graphDevice.getDefaultConfiguration();

public Test() {
JFrame jFrame = new JFrame(graphicConf);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setTitle("double buffer test");
jFrame.setResizable(false);
jFrame.setFocusTraversalKeysEnabled(false);

Canvas canvas = new Canvas();
canvas.setSize(width, height);
canvas.setIgnoreRepaint(true);

jFrame.getContentPane().add(canvas);
jFrame.pack();
jFrame.setVisible(true);

System.out.println("GraphicsConfiguration flipping? " + graphicConf.getBufferCapabilities().isPageFlipping());
canvas.createBufferStrategy(2);
BufferStrategy bufferStrategy = canvas.getBufferStrategy();
System.out.println("BufferStrategy flipping? " + bufferStrategy.getCapabilities().isPageFlipping());

while(true) {
Graphics g = bufferStrategy.getDrawGraphics();
g.setColor(Color.BLACK);
g.fillRect(0,0,width,height);
g.setColor(Color.RED);
g.drawLine((int)(Math.random()*width),(int)(Math.random()*height),
(int)(Math.random()*width),(int)(Math.random()*height));
bufferStrategy.show();
g.dispose();
}
}

public static void main(String[] args) {
new Test();
}
}

最佳答案

坏消息:我在相同的 Mac OS X 配置上得到相同的结果。好消息:isAccelerated() 为真。

System.out.println("BufferStrategy accelerated? " + bufferStrategy
.getCapabilities().getFrontBufferCapabilities().isAccelerated());

我没有使用 CanvasBufferStrategy,而是使用 new JPanel(true) .

附录:例如,

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class NewTest extends JPanel implements ActionListener, Runnable {

private Random r = new Random();
private Timer t = new Timer(10, this);

public static void main(String[] args) {
EventQueue.invokeLater(new NewTest());
}

@Override
public void run() {
JFrame f = new JFrame("NewTest");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
t.start();
}

public NewTest() {
super(true);
this.setPreferredSize(new Dimension(640, 480));
}

@Override
protected void paintComponent(Graphics g) {
int width = this.getWidth();
int height = this.getHeight();
g.setColor(Color.BLACK);
g.fillRect(0, 0, width, height);
g.setColor(Color.RED);
g.drawLine(r.nextInt(width), r.nextInt(height),
r.nextInt(width), r.nextInt(height));

}

@Override
public void actionPerformed(ActionEvent e) {
this.repaint();
}
}

关于Mac 操作系统不支持 Java 翻页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3119826/

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