首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BoxLayout显示底部的白线

BoxLayout显示底部的白线
EN

Stack Overflow用户
提问于 2016-02-13 21:59:16
回答 1查看 704关注 0票数 0

我试着做多条线,在垂直和水平上填充整个框架。我用GridLayout和GridBagLayout进行了尝试,现在使用了BoxLayout --同样的问题!白线通过调整大小。

我不知道我应该使用哪个LayoutManager,因为大家都有相同的问题!我需要一个响应性的布局,所以我需要使用一个LayoutManager,不能修复元素。有人能帮我吗?

代码语言:javascript
复制
    Container parentPane = frame.getContentPane();
    JPanel parentPanel = new JPanel();
    parentPane.add(parentPanel);        

    parentPanel.setLayout( new javax.swing.BoxLayout(parentPanel, javax.swing.BoxLayout.Y_AXIS));   
    JPanel[] parentPanelFields = new JPanel[6];

        for(int i = 0; i < 6; i++) {
            parentPanelFields[i] = new JPanel();        
            parentPanelFields[i].setBackground(Color.RED);
            if(i != 5) parentPanelFields[i].setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.WHITE));

            parentPanel.add (parentPanelFields[i]);

        }

代码的结果是完美的,但是在调整帧的大小时,在帧的底部会出现一条大白线.

完美的结果,但底部有一条大胆的线条:

这是我关于同一个问题的第一个问题,但是关于GridBagLayout:35384891

我如何使这些线在Y轴没有这些白线通过调整帧大小?

请帮帮我-我对这个问题绝望了3天.

谢谢你,沃尔迪

EDIT1:完整代码:

代码语言:javascript
复制
import java.awt.*;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class test {

public static void addComponentsToPane(JFrame frame) {

    Container parentPane = frame.getContentPane();

    JPanel parentPanel = new JPanel();
    parentPane.add(parentPanel);        

    parentPanel.setLayout( new javax.swing.BoxLayout(parentPanel, javax.swing.BoxLayout.Y_AXIS));   
    JPanel[] parentPanelFields = new JPanel[6];

        for(int i = 0; i < 6; i++) {
            parentPanelFields[i] = new JPanel();        
            parentPanelFields[i].setBackground(Color.RED);
            if(i != 5) parentPanelFields[i].setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.WHITE));

            parentPanel.add (parentPanelFields[i]);

        }

}

private static void createAndShowGUI() {

    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame("GridBagLayout Source Demo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Set up the content pane.
    addComponentsToPane(frame);

    frame.pack();
    frame.setVisible(true);
}

public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createAndShowGUI();
        }
    });
}
}

EDIT2: camickr:的解决方案

首先从RelativeLayout (页面底部)下载https://tips4java.wordpress.com/2008/11/02/relative-layout/

第二步是为您的问题->编写代码(在我的例子中):

代码语言:javascript
复制
    RelativeLayout rl = new RelativeLayout(RelativeLayout.Y_AXIS);
    rl.setFill( true );
    JPanel somePanel = new JPanel();
    somePanel.setBackground(Color.BLACK);
    somePanel.setLayout( rl );


    JPanel blue = new JPanel();
    blue.setBackground(Color.BLUE);
    somePanel.add(blue, new Float(1));
    parentPane.add(somePanel);

    JPanel green = new JPanel();
    green.setBackground(Color.GREEN);
    somePanel.add(green, new Float(1));
    parentPane.add(somePanel);

    JPanel red = new JPanel();
    red.setBackground(Color.RED);
    somePanel.add(red, new Float(1));
    parentPane.add(somePanel);

像其他RelativeLayout一样使用LayoutManagers!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-13 22:16:47

如果你有6个面板被添加到一个框架中,并且框架被打包,那么每个面板都会按预期显示。

如果将帧大小增加5个像素,则没有足够的空间为每个面板提供额外的像素,因此在底部有5个额外的像素,因为布局管理器不知道如何将这些额外像素分配给组件。

如果您然后展开帧1像素,那么每个面板将收到一个额外的像素和空间将消失。

您可以尝试使用相对布局。此布局将根据为布局管理器设置的属性将这些额外像素分配给一个或多个组件。

此外,使用Relative Layout,将不需要向每个组件添加边框。您只需将"gap属性“设置为在每个组件之间留下1个像素。然后,父面板的背景将显示出来。

编辑:

基本守则是:

代码语言:javascript
复制
RelativeLayout rl = new RelativeLayout(RelativeLayout.Y_AXIS);
rl.setFill( true ); // to fill horizontal width
rl.setGap( 1 ); // so you don't need the border
somePanel.setLayout( rl );

然后在循环中:

代码语言:javascript
复制
somePanel.add(someComponent, new Float(1.0f));
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35385811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档