BorderLayout显示边框线

sam*_*lee 3 java swing border border-layout

我不是很擅长Java GUI,需要寻求帮助.

我打算在我的BorderLayout中心西边添加图像作为我的内容和底部的按钮.

我创建了一个空边框,在我的南面板和我的西面板和中心面板之间做了一些填充.现在我只想在南边界的顶部添加一条线.

如下面的屏幕截图所示,西面板和中心面板之间也有一条线,我该如何移除该线并将线保持在南面板的顶部?

附上我的代码:

在此输入图像描述

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class test {
    public static void main(String[] args) { 

        JPanel panel1 = new JPanel(new BorderLayout());
        JPanel panel2 = new JPanel(new FlowLayout());
        JPanel panel3 = new JPanel(new FlowLayout());
        JPanel panel4 = new JPanel(new FlowLayout());

        JFrame frame = new JFrame();

        panel2.add( new JLabel( "WEST <will be adding image here>" ));
        panel3.add( new JLabel( "CENTER <contents>"));  
        panel4.add( new JLabel( "SOUTH <will be adding buttons>" ));

        panel1.add(panel2, BorderLayout.WEST);
        panel1.add(panel3, BorderLayout.CENTER);
        panel1.add(panel4, BorderLayout.SOUTH);

        panel2.setBorder(BorderFactory.createRaisedBevelBorder());
        panel3.setBorder(BorderFactory.createRaisedBevelBorder());      
        panel4.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

        frame.add(panel1); 
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.pack();
        frame.setSize(510,390);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setResizable(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

use*_*551 6

要删除WEST和CENTER之间的边框,只需删除它们的边框即可

panel2.setBorder(BorderFactory.createRaisedBevelBorder());
panel3.setBorder(BorderFactory.createRaisedBevelBorder());
Run Code Online (Sandbox Code Playgroud)

如果要保留框架边缘的边框,请添加边框panel1.

对于SOUTH,如果你想"在南边界顶部添加一条线"并保留空边框,请使用:

panel4.setBorder(BorderFactory.createCompoundBorder(
       BorderFactory.createEmptyBorder(10, 10, 10, 10),
       BorderFactory.createMatteBorder(2, 0, 0, 0, Color.BLACK)));
Run Code Online (Sandbox Code Playgroud)

或者createRaisedBevelBorder()代替createMatteBorder.

请记住,您可以切换边框的顺序和样式.有关详细信息,请参阅教程.

内部:哑光,外部:空的 内部:空,外部:遮罩