私はキャンバスでJFrameを作成しました。そのキャンバスに描画したいと思います。後日キャンバスが1秒間に何度も更新されるので、私はこのためのバッファー戦略を使用しています。ここでは、コードは次のとおりです。バッファストラテジで描画するグラフィックスオブジェクトを取得する
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)と[チュートリアル](https:// docs。 oracle.com/javase/tutorial/extra/fullscreen/bufferstrategy.html)、これらは、あなたが 'BufferStrategy'をどのように使用しているか、 – MadProgrammer