当我双击它时如何移动JSplitPane的分隔符?

时间:2017-08-02 12:36:14

标签: java swing jsplitpane

如果我双击分隔符,我想将JSplitPane的分隔符移动到中心。

所以我将MouseListener添加到JSplitPane但它没有用。

只有当我在没有分隔符的情况下双击其他JSplitPane的空间时,它才有效。

有没有办法按我的意愿工作?

这是我失败的代码

splitPane.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
        //super.mouseClicked(e);
        splitPane.setDividerLocation(0.5);
    }
});

(当我使用MouseListener时它的工作方式相同)

1 个答案:

答案 0 :(得分:2)

您的代码不起作用的原因是JSplitPane本身不接收click事件。

相反,JSplitPane的UI类确实。

此代码有效:

JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, component1, component2);

    SplitPaneUI spui = split.getUI();
    if (spui instanceof BasicSplitPaneUI) {
        ((BasicSplitPaneUI) spui).getDivider().addMouseListener(new MouseAdapter() {

            @Override
            public void mouseClicked(MouseEvent arg0) {
                if (arg0.getClickCount() == 2) {
                    split.setDividerLocation(0.5);
                }
            }
        });
    }