Java 如何移动JSplitPane';当我双击它时,它是什么?

Java 如何移动JSplitPane';当我双击它时,它是什么?,java,swing,jsplitpane,Java,Swing,Jsplitpane,如果双击分隔符,我想将JSplitPane的分隔符移到中心 因此,我将MouseListener添加到JSplitPane中,但它不起作用 只有当我双击其他JSplitPane的空格而不使用分隔符时,它才起作用 有什么办法可以让我工作吗 这是我失败的代码 splitPane.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { //super

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

因此,我将MouseListener添加到JSplitPane中,但它不起作用

只有当我双击其他JSplitPane的空格而不使用分隔符时,它才起作用

有什么办法可以让我工作吗

这是我失败的代码

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

(当我使用MouseListener时,其工作原理相同)

代码不工作的原因是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);
                }
            }
        });
    }

代码不起作用的原因是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);
                }
            }
        });
    }

寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参见:如何创建。使用“编辑”链接改进您的问题-不要通过评论添加更多信息。谢谢换句话说:试着写一段最少的代码来说明问题。通常这样做会告诉您代码的错误。寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参见:如何创建。使用“编辑”链接改进您的问题-不要通过评论添加更多信息。谢谢换句话说:试着写一段最少的代码来说明问题。通常这样做会告诉您代码的错误@최혜정 不客气。:)如果对你有帮助的话,请考虑接受这个答案,这样可能会有同样问题的人也知道它是有效的。哦,我忘了。我当然愿意接受你的回答D@최혜정 不客气。:)如果对你有帮助的话,请考虑接受这个答案,这样可能会有同样问题的人也知道它是有效的。哦,我忘了。我当然愿意接受你的回答D