2013-09-29 42 views
1

我的应用程序是全屏独占模式,我希望JPanel mainPanel在LAST_LINE_START中有一些左右填充。但是当我运行这个程序时,它只显示屏幕中央的mainPanel。我也试过其他职位,但他们也没有工作。GridBagLayout锚定不工作,总是显示在JPanel中心

private void mainWindow() 
    { 
     gls =(JPanel) mainUi.getGlassPane(); 
     gls.setLayout(new GridBagLayout()); 

     JPanel mainPanel = new JPanel(new GridLayout(4,1)); 
     nwGame = new JButton("New Game"); 
     nwGame.addActionListener(new ActionListener(){ 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       // TODO Auto-generated method stub 
       gls.setVisible(false); 
       startGame(0); 
       mainUi.repaint(); 
      } 
     }); 

     ldGame = new JButton("Load Game"); 
     ldGame.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent ae) 
      { 

      } 
     }); 

     changeProfile = new JButton("Change Profile"); 
     changeProfile.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent ae) 
      { 

      } 
     }); 

     qtGame = new JButton("Quit Game"); 
     qtGame.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent ae) 
      { 

      } 
     }); 

     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.ipadx = 10; 
     gbc.ipady = 10; 
     gbc.anchor = GridBagConstraints.LAST_LINE_START; 

     mainPanel.add(nwGame); 
     mainPanel.add(ldGame); 
     mainPanel.add(changeProfile); 
     mainPanel.add(qtGame); 

     gls.add(mainPanel,gbc); 
     gls.setVisible(true); 

     mainUi.add(gls); 
     if(!mainUi.isVisible()) 
      mainUi.setVisible(true); 

    }  
+0

这是GridBagLayout'的'的默认行为。它会将所有组件放在容器的中心内...... – MadProgrammer

回答

2

每当我看到...

它只显示的mainPanel屏幕

...使用GridBagLayout的相关的中心,我总是先看看,看看如何用户正在实现weightx和重量级的GridBagConstraint属性,并且正如预期的那样,您不是。使用它们。

GridBagConstraints gbc = new GridBagConstraints(); 
    gbc.ipadx = 10; 
    gbc.ipady = 10; 
    gbc.anchor = GridBagConstraints.LAST_LINE_START; 
    gbc.weightx = 1.0; 
    gbc.weighty = 1.0;