私はまだプログラミング(java)について多くを学ぶ必要があります、私は今まで主にグラフィックスを使用していました。メニューバーを作ってみましたが、うまくいきました。しかし、グラフィックスとJMenubarを一緒に使用すると問題が発生します。最初はグラフィックスを描くことができましたが、いくつかのサイト(これを含む)を調べた後、グラフィックスを機能させることができました。残念ながら、ダブルバッファリングではありません。
これが私がダブルバッファリングを行ってきた方法です。これがダブルバッファリングの悪い方法かどうかはわかりません。
import java.awt.*;
import javax.swing.*;
public class DoubleBuffering extends JFrame
{
private Image dbImage;
private Graphics dbg;
int i = 1;
public DoubleBuffering()
{
setTitle("Double Buffering");
setVisible(true);
setResizable(false);
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void paint(Graphics g)
{
dbImage = createImage(getWidth(), getHeight());
dbg = dbImage.getGraphics();
paintComponent(dbg);
g.drawImage(dbImage, 0, 0, this);
}
public void paintComponent(Graphics g)
{
g.setColor(Color.black);
g.drawString("Text", 75, 71);
i++;
g.drawRect(50 + i, 100, 50, 50);
repaint();
}
public static void main(String[] args)
{
DoubleBuffering DB = new DoubleBuffering();
}
}
これが私のコードで、メニューバーとグラフィックだけが含まれています。メインクラス:
import javax.swing.*;
public class MenubarTest extends JFrame
{
JMenuBar menubar = new JMenuBar();
private drawing drawing;
public MenubarTest()
{
setTitle("JTextField test");
setVisible(true);
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
this.drawing = new drawing();
this.add(drawing);
setJMenuBar(menubar);
menubar.setSize(getWidth(), 10);
JMenu menuA = new JMenu("Menu A");
menubar.add(menuA);
JMenuItem ItemA1 = new JMenuItem("Item A1");
menuA.add(ItemA1);
JMenu menuB = new JMenu("Menu B");
menubar.add(menuB);
JMenuItem itemB1 = new JMenuItem("Item B1");
menuB.add(itemB1);
}
public static void main(String[] args)
{
MenubarTest mt = new MenubarTest();
}
}
描画クラス:
import java.awt.*;
import javax.swing.*;
public class drawing extends JPanel
{
int i;
public void paintComponent(Graphics g)
{
g.setColor(Color.black);
g.drawString("Text", 75, 71);
i++;
g.drawRect(50 + i, 100, 50, 50);
}
}
あなたが私を助けてくれることを願っています、私はしばらく探していました、そして私はダブルバッファーへのいくつかの方法を見つけました、しかしそれらはうまくいきませんでした。それらのいくつかはBufferedImageとBufferStrategyでした。
お時間をいただきありがとうございます。