java - Swing JSplitPane - 有没有办法听到点击分隔线的箭头?

标签 java swing

我试图在单击 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/

相关文章:

java - 创建多个由用户输入定义的 JTextField s,以便通过按下按钮从所有这些输入中读取文本

java - Jboss 6 我试图在服务器上部署 Restful Web 服务,但遇到异常

java - JTextField 焦点

java - 如何在HyperSQL中支持SqlServer的 ".."?

java - 将坐标保存到文件

java - 在 JTextPane 中选择多个项目

java - 如何修复时钟闪烁?

java - 以编程方式单击 Java Swing 中的 GUI 按钮

当我运行 for 循环时,Java 给我零

java - Android - 来自动画 View 的 getAlpha()