我试图在单击 JSplitPane 分隔线的“最小化”或“最大化”小箭头时捕获事件。
我找到了一种方法来聆听分隔栏上其他地方的点击。像这样的东西:
SplitPaneUI spui = splitPane.getUI();
if (spui instanceof BasicSplitPaneUI) {
((BasicSplitPaneUI) spui).getDivider().addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
// do something...
}
});
}
但是有没有一种方法可以听到点击箭头的声音?
最佳答案
I'm trying to catch the event when the small "minimize" or "maximize" arrows of a JSplitPane's divider are clicked.
也许您可以将 PropertyChangeListener
添加到 JSPlitPane
并监听 dividerLocation
更改(假设您不关心分隔线是否被拖动或“单击”开始或结束)。然后您可以检查分隔符位置是在 0 还是最大值。
splitPane.addPropertyChangeListener("dividerLocation", this);
...
public void propertyChange(PropertyChangeEvent e)
{
// Get the new divider location of the split pane
int location = ((Integer)e.getNewValue()).intValue();
if (location == 0)
// do something
else if (location == splitPane.getMaximumDividerLocation())
// do something else
}
如果您确实关心拖动和点击之间的区别,那么也许您可以比较旧值/新值并寻找大于指定值的位置变化。
另一种选择是从分隔线获取按钮:
JSplitPane splitPane = (JSplitPane)e.getSource();
BasicSplitPaneUI ui = (BasicSplitPaneUI)splitPane.getUI();
BasicSplitPaneDivider divider = ui.getDivider();
JButton button1 = (JButton)divider.getComponent(0)
现在您可以向按钮添加另一个 ActionListener 来执行您的自定义代码。
关于java - Swing JSplitPane - 有没有办法听到点击分隔线的箭头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31708697/