如果我双击分隔符,我想将 JSplitPane 的分隔符移动到居中。
所以我将MouseListener添加到JSplitPane,但它不起作用。
仅当我在没有分隔符的情况下双击其他 JSplitPane 的空间时,它才有效。
有什么方法可以随心所欲地工作吗?
这是我失败的代码
splitPane.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//super.mouseClicked(e);
splitPane.setDividerLocation(0.5);
}
});
(当我使用鼠标侦听器时,它的工作原理相同(
代码不起作用的原因是 JSplitPane 本身不会接收单击事件。
相反,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);
}
}
});
}