Я надеюсь, что кто-то случайно наткнулся на следующий вопрос.Перелистывание страницы Java не поддерживается в Mac OS?
У моего приложения Java проблемы с производительностью графики на Mac, поэтому я сделал простое тестовое приложение (код ниже). Когда я запускаю это на Windows, консоль сообщает мне:
GraphicsConfiguration flipping? true
BufferStrategy flipping? правда
Когда я запускаю тот же самый код на Mac OS, я получаю:
GraphicsConfiguration листать? true
BufferStrategy flipping? false
Означает ли это, что в Mac OS перетаскивание страницы просто не поддерживается в оконном приложении? Есть ли какие-либо трюки, чтобы сделать работу с перелистыванием страницы на Mac OS без полного экрана?
Все указатели очень приветствуются,
Mattijs
Использование JDK 1.6 на Windows XP и Mac OS 10.5.
Код:
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();
}
}
Это было некоторое время назад, но я успешно использовал страницы листать (не полный экран) в JOGL на Mac. – finnw