0

JPanel が 2 つあり、ボタン パネルが 1 つ、グラフィック パネルが 1 つです。ボタン パネルをグラフィック パネルのすぐ下に配置したいのですが、ボタン パネルによってグラフィック パネルが途中で切り取られてしまいます。私はボックスレイアウトを試してきましたが、これは私がやろうとしていることに最適な形式のように思われます。フォーマットの問題について誰かアドバイスをください。

    JFrame canvas = new JFrame("Baseball Strike K");


    JFrame canvas = new JFrame ("GraphicBoard");
      canvas.setVisible(true);
      canvas.setSize(1000,1000);
      canvas.setDefaultCloseOperation(EXIT_ON_CLOSE);
//create two panels
//add them to contentPane

//set Layout
      JPanel buttonPanel = createButtons();
      JPanel mainPanel = new Graphic(); //extends JPanel and writes the paint method
      mainPanel.setSize(1000, 1000);

      Container content = canvas.getContentPane();
      content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
      content.add(mainPanel);
      content.add(buttonPanel);
4

1 に答える 1

1
mainPanel.setSize(1000, 1000);

レイアウト マネージャーの仕事は、コンポーネントのサイズを決定することなので、コンポーネントの setSize() メソッドを呼び出すことはありません。

代わりに、レイアウト マネージャーにサイズのヒントを与えます。これを行うには、 getPreferredSize() メソッドをオーバーライドして適切な値を返します。また、より妥当なサイズ (1000、1000) を選択すると、ほとんどの画面で表示するには少し大きくなります。ペイント エリアをこれほど大きくしたい場合は、ペイント パネルを JScrollPane に追加してから、スクロール ペインをフレームに追加します。

BoxLayout を使用してコードを動作させてみてください。次に、BorderLayout を使用することをお勧めします。次に、ペイント パネルを CENTER に追加し、ボタンを SOUTH に追加します。フレームのサイズを変更すると、ペイント パネルのサイズが調整されます。

canvas.setVisible(true);

また、そのコード行の配置が間違っています。フレームを表示する前に、まずすべてのコンポーネントをフレームに追加する必要があります。

于 2013-03-17T20:33:18.340 に答える