2

私はまだプログラミング(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でした。

お時間をいただきありがとうございます。

4

0 に答える 0