如何将EtchedBorder仅应用于边界的特定边?

sam*_*ell 4 java swing border

我有一个JPanel,我想添加一个EtchedBorder.Lowered只有左边框.我知道MatteBorders可以做到这一点,但我想知道是否有办法用EtchedBorder做到这一点?

mKo*_*bel 5

  • 使用JSeparator而不是EtchedBorder.Lowered,

  • 但JSeparator默认只有line,但你可以构建有趣的Borders

在此输入图像描述

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SwingUtilities;

public class NestedLayout {

    private JFrame frame = new JFrame();
    private JPanel leftPanel = new JPanel();

    public NestedLayout() {
        leftPanel.setLayout(new BorderLayout());
        leftPanel.setBorder(BorderFactory.createEmptyBorder(
                10, //top
                10, //left
                10, //bottom
                10));   //right
        leftPanel.add(new JSeparator(JSeparator.VERTICAL), BorderLayout.CENTER);
        leftPanel.setPreferredSize(new Dimension(40, 40));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(leftPanel, BorderLayout.WEST);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new NestedLayout();
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)