2013-10-30 53 views
0

所以在我的GUI中,我有一個JFrame是一個borderlayout。在北部和西部有一個菜單欄和一些圖形用戶界面。在CENTER中,有一個JLabel。我希望它移動到JPanel的中心(水平和垂直)。我如何正確地做到這一點?我試過盒子佈局和網格佈局。一個要求是我不能使用gridbag佈局。Java:如何將JLabel移動到JPanel的中心?

public class NewClass extends JFrame{ 
    public NewClass() { 
     setVisible(true); 
     setSize(500,500); 
     setDefaultCloseOperation (EXIT_ON_CLOSE); 

//menubar 
     JMenuBar bar = new JMenuBar(); 
     JMenu editMenu = new JMenu("Edit"); 
     JMenuItem mItem = new JMenuItem("Cut"); // edit->cut 
     editMenu.add(mItem); 
     mItem = new JMenuItem("Copy"); // edit->copy 
     editMenu.add(mItem); 
     mItem = new JMenuItem("Paste"); // edit->paste 
     editMenu.add(mItem); 
     bar.add(editMenu); 
     this.setJMenuBar(bar); 

//north panel 
     JPanel topPanel = new JPanel(); 
     this.add(topPanel,BorderLayout.NORTH); 
     JLabel myLabel = new JLabel ("Label:") ; 
     topPanel.add(myLabel); 
     JButton mytopButton = new JButton ("Push Me"); 
     topPanel.add(mytopButton); 

//left panel 
     JPanel leftPanel = new JPanel(); 
     leftPanel.setBorder (new TitledBorder("Commands:")); 
     leftPanel.setLayout (new GridLayout (10,1)); 
     this.add(leftPanel,BorderLayout.WEST); 
     JButton myLeftButton1 = new JButton ("Button 1"); 
     leftPanel.add(myLeftButton1); 
     JButton myLeftButton2 = new JButton ("Button 2"); 
     leftPanel.add(myLeftButton2); 
     JButton myLeftButton3 = new JButton ("Button3"); 
     leftPanel.add(myLeftButton3); 

//center panel 
     JPanel centerPanel = new JPanel(); 
     this.add(centerPanel,BorderLayout.CENTER); 
     JLabel mapLabel = new JLabel("Test_String"); //move this to center of JPanel 
     centerPanel.add(mapLabel); 
     centerPanel.setBorder (new EtchedBorder(Color.black,Color.black)); 
     centerPanel.setBackground (Color.white); 
    } 
} 
+0

另請參閱[這個答案](http://stackoverflow.com/a/7181197/418556)右邊的兩個佈局(以一個組件爲中心)。 –

回答

1

回答。感謝大家。

JPanel centerPanel = new JPanel(); 
    centerPanel.setLayout (new GridLayout()); //added 
    this.add(centerPanel,BorderLayout.CENTER); 
    JLabel mapLabel = new JLabel("Test_String"); 
    mapLabel.setHorizontalAlignment(SwingConstants.CENTER); //added 
    mapLabel.setVerticalAlignment(SwingConstants.CENTER); //added 
    centerPanel.add(mapLabel); 
    centerPanel.setBorder (new EtchedBorder(Color.black,Color.black)); 
    centerPanel.setBackground (Color.white); 
+2

然後,您應該接受將您導向setHorizo​​ntalAlignment和setVerticalAlignment方法的答案。 – camickr

1

檢查API以瞭解影響組件的alignment的方法。

有一些方法會影響佈局管理器中組件的對齊方式以及影響標籤本身內文本對齊的其他方法。