0

まあ、彼は私の問題です:

Javaグラフィックを使用してグリッドをJFrameに描画しようとしています。しかし、そうすると、グリッドはJFrameのコンポーネント(JTextFields、Buttonsなど)をオーバーレイします。paintメソッドの最後に「super.paint(g)」を書き込もうとしましたが、そうすると、グリッドは書きません。が表示されます。

彼はコードです:

            public void paint(Graphics g){
                    super.paint(g);
                    g.setColor(Color.PINK);
                    g.drawLine(0, 240, 640, 240);
                    g.drawLine(320,0,320,480);
                    g.setColor(Color.GRAY);
                    for (int i=1; i<24; i++){
                        g.drawLine(0, i*20, 640, i*20);
                    }

            }

君たちありがとう!

4

1 に答える 1

3
  1. カスタムコンポーネントを自分で作成します(のようなものから拡張しますJPanel)。そのメソッドをオーバーライドしpaintComponent、そこでグリッド描画を行います(呼び出すことを忘れないでくださいsuper.paintComponent)。
  2. を作成するときはJFrame、パネルをフレームのコンテンツペインとして設定します。frame.setContentPane(new GridPane())
  3. 通常どおり、フレームにコンポーネントを追加し続けます。

paintのようなトップレベルのコンテナのメソッドをオーバーライドすることはお勧めできませんJFrame。それらには、ペイントを妨げる可能性のある多くのサブコンポーネントが含まれており、ペイントプロセスを簡単に台無しにすることができます。

于 2013-02-20T01:53:23.487 に答える