1

JPanel現在、別JPanelの 内にある に図形を描画しようとしていJFrameます。

私は Google と Youtube を検索し、JFrame1 つのパネルを持つ 内で形状を描画する方法を見つけましたが、私がやっていることを助けることができるものは何も見つかりませんでした. (多分私は何かを見ていません)。

これまでに見たコード:

public class GameScreen 
{
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.setColor(Color.red);
        g.drawRect(100, 10, 30, 40);
    }

    public static void main(String[] args)
    {
       GameScreen gs = new GameScreen();
       JFrame f = new JFrame();
       f.setTitle("");
       f.setSize(400,400);
       f.setVisible(true);
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       f.add(gs);
}

これは、1 つのパネルだけを扱っている場合には問題ありませんが、作成した最初のパネル内にあるパネルに形状を表示したいと考えています。

4

2 に答える 2

3

現在行っているのと同じ方法で JPanel を JFrame に追加しますが、JPanel の独自のサブクラスを使用して行います。

class MyPanel extends JPanel {
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.red);
        g.drawRect(100, 10, 30, 40);
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(400,400); // As suggested by camickr
    }
}

これを JFrame 内にある JPanel に追加できます

public static void main(String[] args)
{
   MyPanel mp = new MyPanel();
   JPanel jp = new JPanel();
   jp.add(mp);

   JFrame f = new JFrame();
   f.setTitle("");
   f.setSize(400,400);
   f.setVisible(true);
   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   f.add(jp);
}

コンポーネントを子コンポーネントとして追加する場合、これはコンポーネント内のコンポーネントに対して機能します。重要なのは、コンポーネントを拡張し、変更したいメソッドをオーバーライドすることです。

于 2013-03-31T20:01:38.043 に答える