0

私は単純なゲームを作ろうとしていますが、ゲームが機能するには長方形を描くことができる必要があります。paint メソッドを追加して、長方形を描くように指示しましたが、うまくいきませんでした。誰かが私のコードを修正するか、長方形が描画されない理由を教えてもらえますか?

import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;



public class Graphic extends JPanel{

JFrame f = new JFrame("lol");
JPanel p = new JPanel(new GridBagLayout());

public Graphic(){

        f.setVisible(true);
        f.setSize(1600,900);
        //above decides if the frame is visible and the size of it
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //above makes the Jpanel which is in the frame
        JButton b1 = new JButton("Play");
        JButton b2 = new JButton("Stop");
        //above makes a button


        GridBagConstraints c = new GridBagConstraints();

        c.insets = new Insets(10,10,10,10);
        c.gridx = 0;
        c.gridy = 1;

        p.add(b1,c);
        //c.gridx = 0;
        //c.gridy = 2;
        p.add(b2);

        f.add(p);
}
public void paint(Graphics g){
    g.drawRect(100,100,100,100);
}


public static void main(String args[]) {
    Graphic G = new Graphic();
}

}
4

1 に答える 1

2

実際にパネルをに追加JFrameすることはありません。交換:

f.add(p);

f.add(p, BorderLayout.NORTH);
f.add(this);

明らかに、これは位置を移動するJPanel pのでBorderLayout.CENTER、これが現在どこにあるかを決定する必要があります。示されているように、北に追加できます。


また、 を呼び出すことを忘れずに、paintComponentではなくオーバーライドする必要があります。paintsuper.paintComponent(g)

参照:カスタム ペインティング

于 2013-04-01T23:49:19.710 に答える