0

私のプログラムでは、 cardLayout を使用してパネルを切り替えます(各パネルは個別のクラスとして使用されます)。パネルの 1 つ、ボードと呼びましょう。グラフィックが含まれています。

私が理解しているように、パネルのサイズはウィンドウのサイズまたは jframe に適合しているため、ウィンドウのサイズを変更すると、jpanel のサイズとその中のグラフィックスもサイズが変わります。

ウィンドウのサイズを変更するときにグラフィックをウィンドウの中央に配置するにはどうすればよいですか? または、jpanel を中央に配置する方法を理解しているので、そこに含まれるグラフィックスもウィンドウの中央に配置されますか?

プログラムで使用する私のグラフィックスは、単純な正方形のグリッド (セルの数で固定) である可能性があります。コードは次のとおりです。COLS と ROWS は定数であり、SIZE (セルのサイズ) はウィンドウのサイズに調整され、かわった:

       g.setColor(Color.LIGHT_GRAY);
        for( int i = 1; i < COLS; i ++ ){
            for( int j = 1; j < ROWS; j ++ ){
                g.drawLine(0, j*SIZE, COLS*SIZE, j*SIZE);
                g.drawLine(i*SIZE, 0, i*SIZE, ROWS*SIZE);
            }
        }
4

2 に答える 2

1

可能な解決策:

  • paintComponent メソッド内から JPanel の幅と高さを取得し、この情報を使用してグラフィックをスケーリングします。
  • GridBagLayout を使用する「ラッパー」JPanel である別の JPanel 内に描画 JPanel をネストします。図面に JPanel が追加され、GridBagConstraints がない場合、ラッパー JPanel に集中化されたままになります。
于 2013-05-19T20:11:35.633 に答える
0

中央にある長さの線を描きたい場合は、描いているものの幅を決定します。50 でパネルの幅が 800 の場合、描画の開始点として 400 - 25 または 375 を実行します。0から描くのではなく、原点から描きます。8 つのものを並べて描画していて、8 つ全体を中央に配置したい場合は、描画しているサイズとして塗りつぶす合計サイズを取得し、その周りと各列にどれだけのスペースがあるかをもう一度調べます。それくらいオフセットして描きます。

于 2013-05-19T20:15:02.667 に答える