Как я могу изменить стиль разделенной панели в JSplitPane? - PullRequest
0 голосов
/ 03 октября 2019

Я использую JSplitPane s для некоторых из моих панелей, но они немного толстые, особенно если у вас есть несколько из них, показывающих.

Возможно ли придать этим полосам стиль чего-нибудь более тонкого,как линия со стрелкой, или даже просто линия?

1 Ответ

2 голосов
/ 03 октября 2019

Вы можете использовать setDividerSize, чтобы изменить его ширину. Его значение по умолчанию равно 10. Полный пример:

public class SplitPaneTest extends JFrame {
    public SplitPaneTest() {
        super("test");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        JPanel left = new JPanel();
        JPanel right = new JPanel();

        JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, right);
        System.out.println(sp.getDividerSize()); //Prints 10
        sp.setDividerSize(1);

        add(sp, BorderLayout.CENTER);
        pack();
        setLocationRelativeTo(null);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            new SplitPaneTest().setVisible(true);
        });
    }
}

Однако Look & Feels способны изменять его внешний вид, поскольку они изменяют его UI. Если вышеупомянутое решение не работает для вас, вам придется возиться с его пользовательским интерфейсом. Например, в одном из моих приложений я не хотел ни одной строки (при использовании Windows Look and Feel), поэтому, чтобы сделать ее невидимой, мне нужно было:

sp.setUI(new BasicSplitPaneUI() {
    @Override
    public BasicSplitPaneDivider createDefaultDivider() {
        return new BasicSplitPaneDivider(this) {
            private static final long serialVersionUID = -6000773723083732304L;

            @Override
            public void paint(Graphics g) {
                //Divider gets no painting
            }
        };
    }
});
...