2017-10-09 233 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