如何在双击时移动 JSplitPane 的分隔线?
How to move JSplitPane's divider when I double-clicked it?
如果我双击分隔线,我想将 JSplitPane 的分隔线移动到中心。
所以我将 MouseListener 添加到 JSplitPane,但它没有用。
只有当我双击其他没有分隔线的 JSplitPane 的 space 时它才有效。
有什么方法可以随心所欲地工作吗?
这是我失败的代码
splitPane.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//super.mouseClicked(e);
splitPane.setDividerLocation(0.5);
}
});
(当我使用 MouseListener 时效果相同)
您的代码不起作用的原因是 JSplitPane 本身没有收到点击事件。
相反,JSplitPane 的 UI class 会。
此代码有效:
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 的分隔线移动到中心。
所以我将 MouseListener 添加到 JSplitPane,但它没有用。
只有当我双击其他没有分隔线的 JSplitPane 的 space 时它才有效。
有什么方法可以随心所欲地工作吗?
这是我失败的代码
splitPane.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//super.mouseClicked(e);
splitPane.setDividerLocation(0.5);
}
});
(当我使用 MouseListener 时效果相同)
您的代码不起作用的原因是 JSplitPane 本身没有收到点击事件。
相反,JSplitPane 的 UI class 会。
此代码有效:
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);
}
}
});
}