2017-10-09 114 views
1

我正在嘗試使用gridbagayout來對齊jtabbedpane和一個滾動窗格。我試圖垂直對齊它們。但是,結果是水平的。有人爲什麼會發生這種事謝謝。java GridBagLayout不工作?

這是實際的結果是: enter image description here

這裏是我的代碼:

JTabbedPane tabs= new JTabbedPane(); 
    tabs.setOpaque(false); 


     JScrollPane textScrollPane= new JScrollPane(); 
      textArea= new JTextArea(); 
      textArea.setEditable(false); 
      DefaultCaret caret = (DefaultCaret)textArea.getCaret(); 
      caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); 
      textScrollPane.setViewportView(textArea); 

    GridBagConstraints c = new GridBagConstraints(); 
     { 
      c.fill = GridBagConstraints.BOTH; 
      c.gridx = 0; 
      c.gridy = 0; 
      c.weightx=1; 
      c.gridheight=4; 
      panel.add(tabs,c); 

      c.fill = GridBagConstraints.BOTH; 
      c.gridx=0; 
      c.gridy=1; 
      c.weightx=1; 
      c.gridheight=1; 
      c.ipadx=20; 
      c.ipady=10; 
      panel.add(textScrollPane,c); 

      /////restore to default 
      c.gridheight=1; 
      c.ipadx=0; 
      c.ipady=0; 
     } 
+0

後適當[MCVE]當你問一個問題,所以我們不必去猜測你的代碼是真的這樣做。 – camickr

回答

1

然而,結果卻是水平的。有人爲什麼會發生這種事

可能是因爲JPanel的默認佈局管理器是FlowLayout,並且您在創建面板時沒有更改佈局管理器。 FlowLayout水平顯示組件。

當您創建的面板,您還需要:

JPanel panel = new JPanel(new GridBagLayout()); 
+0

Ahhhh ...我做了一個愚蠢的愚蠢的錯誤,創建一個GridLayout而不是GridBagLayout ...感謝您的幫助! – Ptolemorphism

+0

我還有一個問題......有什麼辦法來解決這兩個面板的高度比率?無論JFrame的高度如何,我都希望它們可以達到4:1。 – Ptolemorphism

+0

如果有方法可以設置這兩個面板的默認大小,那也可以。但我聽到有人說你不應該使用「set ... Size()」方法,因爲它會被gridBagLayout忽略。真的嗎? – Ptolemorphism