java - BorderLayout 显示边框线

标签 java swing border border-layout

我的Java GUI不是很好,需要寻求帮助。

我打算在我的 BorderLayout 的西边添加图片,中心是我的内容,按钮在底部。

我创建了一个空边框,以便在我的南面板与西面板和中心面板之间制作一些填充物。现在我只想在南边界的顶部添加一条线。

如下图所示,西面板和中心面板之间也有一条线,我怎样才能去掉那条线并保持横跨南面板顶部的线?

附上我的代码:

enter image description here

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

最佳答案

要移除WEST和CENTER之间的边界,只需移除它们的边界

panel2.setBorder(BorderFactory.createRaisedBevelBorder());
panel3.setBorder(BorderFactory.createRaisedBevelBorder());

如果您想保留它们与框架边缘的边框,请改为向 panel1 添加边框。

至于南,如果你想“在南边界的顶部添加一条线”并保留空边界,使用:

panel4.setBorder(BorderFactory.createCompoundBorder(
       BorderFactory.createEmptyBorder(10, 10, 10, 10),
       BorderFactory.createMatteBorder(2, 0, 0, 0, Color.BLACK)));

createRaisedBevelBorder() 而不是 createMatteBorder

请记住,您可以切换边框的顺序及其样式。查看tutorial了解更多信息。

Inner: matte, outer: empty Inner: empty, outer: matte

关于java - BorderLayout 显示边框线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30078618/

相关文章:

java - 对hashmap Java的键进行排序的有效方法

java - j2se 中的文件传输作为 Web 服务

java - 渲染单元格中的 double 值

ios - 如何在 Swift 3 的 UIView 上添加右边框?

带有嵌套图像的 UiScrollview 看起来很奇怪

java - 两个大小为 100 万的数组中的第一个公共(public)数字

java - 服务程序 : weird cookie string

java - 停止监视目录的变化(清理)

java - 在按 YES 退出 Java 程序之前确认

java - Mac JVM渲染JTabbedPane 1.6及以上版本差异