私はJFrameを作成し、それに矩形を描画している必要があります。 それは動作しません、時にはそれは完全に黒く、時には完全に白です、ここに私の方法です。このコードは四角形を表示しませんが、それは
したがって、最初にバッファを作成し、フレームレートも無視するため、renderメソッドは2回呼び出されます。これは現在のところ非同期です。
Edit1:私は1つの問題を解決しました: 今は矩形を描いていますが、時には白い画面が表示されるだけです。私はまだその問題を解決する必要があります
Edit2:私は解決策を探しているだけでなく、私の問題が発生している理由も探しているので、コードを盲目的に書くのではありません。
public MyFrame(String title,int width,int height)
{
super(title);
this.setSize(width,height);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setUndecorated(true);
this.addKeyListener(new KeyInput());
this.setVisible(true);
}
public void draw(Graphics2D g,int arg)
{
g.setColor(new Color(0,0,0,255));
g.fillRect(0,0,SIZE,SIZE);
g.setColor(new Color(255,255,255));
g.fillRect(0,0,50,50);
}
public void render(int arg)
{
BufferStrategy bs=this.getBufferStrategy();
if(null==bs)
{
this.createBufferStrategy(3);
}
else
{
Graphics2D g=(Graphics2D)bs.getDrawGraphics();
g.setColor(new Color(0,0,0,255));
g.fillRect(0,0,this.getWidth(),this.getHeight());
BufferedImage canvas=new BufferedImage(SIZE,SIZE,2);
int s=Math.min(this.getWidth(),this.getHeight());
g.drawImage(canvas,(this.getWidth()-s)/2,(this.getHeight()-s)/2,s,s,this);
Graphics2D g2=canvas.createGraphics();
this.draw(g2,arg);
bs.show();
g.dispose();
g2.dispose();
}
}
public static void main(String[] args)
{
Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
FRAME=new MyFrame("Insert name here!",d.width,d.height,1);
FRAME.render(0);
FRAME.render(0);
}
編集:これはもはやneessaryですが、私はとにかくあなたの助けをありがとう、問題を解決するために管理していません。
1)* "INSERT_FRAME_NAME_HERE" *そうでなければなりません。一般的なJava命名法(名前付け規則、例えば 'EachWordUpperCaseClass'、' firstWordLowerCaseMethod() '、' firstWordLowerCaseAttribute'が 'UPPER_CASE_CONSTANT'でない限り)を学び、一貫して使用してください。サンプルコードでさえ。 2)すぐに助けを得るために、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 –
さて、私はそれを変更します。 –
[レッスン:カスタム・ペイントの実行](http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html):スイング・グラフィックスへの入門チュートリアル –