2009-09-26 8 views
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); 
    } 

ответ

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)); 
..... 
} 
2

Установите предпочтительный размер вашего компонента на 600 600 и вызовите пакет() на фрейме.

3

Причина в том, что для «вставки» есть место, такое как граница. Чтобы узнать, сколько лишнего пространства необходимо назвать фреймом 'getInsets()'.

0

сделать так, как предлагал NawaMan, и принять во внимание вставки, или установить размер вашего объекта «PaintSurface» на 600x600. Конечно, вам может понадобиться панель прокрутки, чтобы получить полный размер.