【问题标题】:java GridBagLayout not working?java GridBagLayout 不工作?
【发布时间】:2017-10-09 14:10:52
【问题描述】:

我正在尝试使用 gridbagayout 来对齐 jtabbedpane 和滚动窗格。我试图垂直对齐它们。然而,结果是水平的。有人为什么会这样吗?谢谢。

这是实际结果:

这是我的代码:

  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;
        }

【问题讨论】:

标签: java swing user-interface jpanel gridbaglayout


【解决方案1】:

但是,结果是水平的。有人为什么会这样吗?

可能是因为 JPanel 的默认布局管理器是 FlowLayout,而您在创建面板时没有更改布局管理器。 FlowLayout 水平显示组件。

创建面板时还需要:

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

【讨论】:

  • ahhhh ......我通过创建一个gridlayout而不是gridbaglayout而不是gridbaglayout犯了一个愚蠢的错误...感谢您的帮助! span>
  • 我还有一个问题...有没有办法固定这两个面板的高度比?我希望无论 JFrame 的高度是多少,它们都可以是 4:1。
  • 如果有办法设置这两个面板的默认大小,那也可以。但我听到有人说你永远不应该使用“set...Size()”方法,因为它会被 gridBagLayout 忽略。这是真的吗?
  • 没关系。我找到了这个tips4java.wordpress.com/2008/11/02/relative-layout,它完美无缺!不过还是谢谢你!
猜你喜欢
  • 2013-07-12
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 2012-10-10
  • 1970-01-01
  • 2014-08-21
  • 2012-11-18
相关资源
最近更新 更多