0

描画パネルのサイズ設定に問題があります。サイズが 0f 600,600 の描画パネルが必要ですが、描画パネルのサイズが 600,600 より小さいことがわかりました。フレームサイズが 600,600 で、描画パネルが小さくなっているようです。描画パネルのサイズを 600,600 に設定するにはどうすればよいですか?

....
public class DrawingBoardWithMatrix extends JFrame {
   public static void main(String[] args) {
      new DrawingBoardWithMatrix();
   }

   public DrawingBoardWithMatrix(){     
      this.getContentPane().setBackground(Color.WHITE);
      this.setSize(600, 600);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.add(new PaintSurface(), BorderLayout.CENTER);
      this.setVisible(true);
      setResizable(false);    
   }

コードを変更しましたが、問題はまだ存在します。このとき、描画パネルのサイズが意図したサイズ寸法よりも大きくなっています。

public class DrawingBoardWithMatrix extends JFrame {
  public static void main(String[] args) {
      new DrawingBoardWithMatrix();
  }

  public DrawingBoardWithMatrix(){  
      Container c = getContentPane();
      c.add(new PaintSurface(), BorderLayout.CENTER);
      c.setPreferredSize(new Dimension(600,600));
      pack();
      this.setVisible(true);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    
      setResizable(false); 
  }
4

4 に答える 4

3

その理由は、ボーダーなどの「インセット」用に予約されたスペースがあるためです。フレーム ' ' と呼ばれる余分なスペースがどれだけ必要かを知るためにgetInsets()

于 2009-09-26T14:54:00.857 に答える
2

コンポーネントの優先サイズを 600,600 に設定し、フレームで pack() を呼び出します。

于 2009-09-26T14:47:57.653 に答える
0

NawaManが提案したように実行し、挿入図を考慮に入れるか、「PaintSurface」オブジェクトのサイズを600x600に設定します。もちろん、フルサイズを取得するにはスクロールペインが必要になる場合があります。

于 2009-09-26T22:32:24.390 に答える
0

問題は解決しました

  public DrawingBoardWithMatrix(){  
      Container c = getContentPane();
      c.add(new PaintSurface(), BorderLayout.CENTER);
      setResizable(false);      //put the code setResizable(false) before pack();
      pack();
      this.setVisible(true);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    

  }

public PaintSurface() {
    this.setPreferredSize(new Dimension (600,600)); 
.....
}
于 2009-09-27T14:04:00.393 に答える