2016-12-22 3 views
-1

Я делал игру с сеткой gui, и я создал MyPanel, который расширяет JPanel для отображения изображения bg и собственных кнопок. Проблема заключается в том, когда я делаю GridLayout, который больше, чем 12х12, то это делает его собственный Магин: enter image description hereGridlayout делает свой собственный запас

Изображение на слева < = 13 корпус и кнопки прекрасно вписываются, когда изображение на право, дело> 13 есть небольшой запас, который я не могу избавиться от. Код:

private void initialize() { 
     frame = new JFrame(); 
     frame.setBounds(100, 100, 450, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setLayout(null); 

     MyPanel panel = new MyPanel(); 
     panel.setBounds(10, 10, 360, 360); 
     frame.getContentPane().add(panel); 
     panel.setLayout(new GridLayout(size,size)); 

     buttons = new Button[size][]; 
     for(int i=0;i<size;i++) 
     { 

      buttons[i] = new Button[size]; 
      for(int j=0;j<size;j++) 
      { 
       buttons[i][j] = new Button(); 
       panel.add(buttons[i][j]); 
      } 
     } 
    } 
+0

«Небольшой край, от которого я не могу избавиться»: где ??? возможно, если вы наберете свой ответ дважды жирным, мы сможем увидеть его – gpasch

+0

@gpasch, так как вы можете видеть на картинке справа в левом верхнем углу, есть несколько кнопок, но они не прилипают идеально к началу панели. –

ответ

2

Не используйте нулевой макет!

Пункт управления компоновкой заключается в том, что диспетчер компоновки определит размер панели.

Затем вы используете только pack() на кадре, и все компоненты будут отображаться в их предпочтительном размере.

Кроме того, не используйте Button, то есть компонент AWT. Компоненты качания начинаются с "J", поэтому вы должны использовать JButton.

Смежные вопросы