【问题标题】:Java Swing: Changing border width/height on BorderLayoutJava Swing:更改 BorderLayout 上的边框宽度/高度
【发布时间】:2012-03-08 03:05:16
【问题描述】:

我是 Java Swing 的新手。我正在尝试制作一个包含三个按钮的框架;一个在中间,另一个在顶部,最后一个在右边。我想让 NORTH 和 EAST 边界的宽度相同。但是现在,东边界比北边界宽。

我想知道是否有办法在 BorderLayout 中更改 WEST/EAST 边界的宽度或 NORTH/SOUTH 边界的高度。

【问题讨论】:

  • “EAST 边界比 NORTH 边界宽” AFAIU 这是不可能的。发布一个SSCCE 表明这一点。

标签: java swing awt layout-manager border-layout


【解决方案1】:

阅读文档怎么样?

http://docs.oracle.com/javase/6/docs/api/java/awt/BorderLayout.html#BorderLayout%28int,%20int%29:

构造一个在组件之间具有指定间隙的边框布局。 水平间隙由 hgap 指定,垂直间隙为 由 vgap 指定。

【讨论】:

    【解决方案2】:

    据我所知,您不能直接设置边框区域的高度/宽度。 您只能指定放置在这些区域内的组件的大小。

    但是,如前所述,您可以指定区域之间的间隙。

    GridBagLayout 更灵活,但也更复杂。

    在 Swing 中构建布局并不总是那么容易——也许使用 MigLayout(第三方库)会为您简化事情:http://www.miglayout.com/

    【讨论】:

      【解决方案3】:

      假设您已经在使用 BorderLayout,您可以使用面板来控制框架的布局并创建边框感觉。然后,您可以使用 setPreferredSize(new Dimension(int, int)) 请求首选尺寸,其中 (int, int) 分别是宽度和高度。边框的代码将如下所示:

      JPanel jLeft = new JPanel();
      JPanel jRight = new JPanel();
      JPanel jTop = new JPanel();
      JPanel jBottom = new JPanel();
      
      add(jLeft, "West");
      jLeft.setPreferredSize(new Dimension(40, 480));
      
      add(jRight, "East");
      jRight.setPreferredSize(new Dimension(40, 480));
      
      add(jTop, "North");
      jTop.setPreferredSize(new Dimension(640, 40));
      
      add(jBottom, "South");
      jBottom.setPreferredSize(new Dimension(640, 40));
      

      上面的示例要求所有边框具有相同的粗细,因为东西边框的宽度与南北边框的高度相匹配。这适用于大小为 (640, 480) 的帧。然后,您可以使用以下方式将按钮添加到框架中:

      JButton button = new JButton();
      jTop.add(button);
      button.setPreferredSize(new Dimension(60, 20));
      

      您可以在此处找到另一个使用 setPreferredSize 的好例子:https://stackoverflow.com/a/17027872

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        • 1970-01-01
        • 1970-01-01
        • 2016-07-25
        • 2017-12-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多