저는 캔버스가있는 JFrame을 만들었고 그 캔버스에 그리기를 원합니다. 나중에 캔버스가 여러 번 업데이트 될 것이므로 버퍼링 전략을 사용하고 있습니다. 여기에 코드입니다 :버퍼 전략을 사용하여 그릴 그래픽 객체 받기
package mainPackage;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
public class TickPainter {
//just some presets for a window.
public static JFrame makeWindow(String title, int width, int height) {
JFrame mainWindow = new JFrame();
mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWindow.setSize(width, height);
mainWindow.setVisible(true);
mainWindow.setLocationRelativeTo(null);
mainWindow.setTitle(title);
return mainWindow;
}
public static void main(String[] args) {
JFrame mainWindow = makeWindow("Practice", 800, 600);
Canvas mainCanvas = new Canvas();
mainWindow.add(mainCanvas);
mainCanvas.setSize(mainWindow.getWidth(), mainWindow.getHeight());
mainCanvas.setBackground(Color.white);
mainCanvas.createBufferStrategy(3);
BufferStrategy bufferStrat = mainCanvas.getBufferStrategy();
Graphics g = bufferStrat.getDrawGraphics();
g.setColor(Color.black);
g.fillRect(250, 250, 250, 250);
g.dispose();
bufferStrat.show();
}
}
의도 한대로, 내가 정말 여기 분명 뭔가를 놓친 나는 단지 그것을 볼 수없는 것 같은 느낌 검은 사각형을 그립니다하지 않는 프로그램. 현재이 프로그램은 그냥 빈 흰색 캔버스를 만듭니다. 문제의 일부인 것처럼 느낄 수있는 것은 버퍼가 사각형보다 빨리 프레임을 전달한다는 것입니다.하지만이 프레임을로드 할 프레임이 없으므로이 작업을 수행하는 이유를 알 수 없습니다.
먼저 [JavaDocs] (https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferStrategy.html)와 [tutorial] (https : // docs. oracle.com/javase/tutorial/extra/fullscreen/bufferstrategy.html), 그들은 어떻게 여러분이'BufferStrategy'를 어떻게 사용하는지에 대한 귀중한 예를 제공합니다. – MadProgrammer