gpt4 book ai didi

java - 如何实现在窗口激活之前禁用的 Java/Swing 控件?

转载 作者:行者123 更新时间:2023-12-02 12:21:05 24 4
gpt4 key购买 nike

我正在为 macOS 实现一个 Java/Swing 应用程序,在该应用程序中,大多数与鼠标按钮相关的行为通常会被禁用,直到激活窗口。换句话说,当在非 Activity 窗口上按下鼠标按钮时,该窗口将被激活,但不会发生任何其他情况。 (也有异常(exception)。单击某些按钮将激活窗口并运行其正常操作。)有没有办法做到这一点?基本问题是,当应用程序收到鼠标按下事件时,窗口已经处于 Activity 状态。到目前为止我唯一的想法是按时间关联窗口激活事件和鼠标按下事件,这可能不完全可靠。

最佳答案

您可以使按钮的 contains() 取决于框架当前是否处于 Activity 状态:

    final JFrame frame = new JFrame();

JButton button = new JButton() {
@Override
public boolean contains(int x, int y) {
return super.contains(x, y) && frame.isActive();
}
};

当框架处于非 Activity 状态并且按钮区域被单击时,按钮将不会接受鼠标事件,因为 contains() 返回 false,按钮的父级会测试 contains() (以及父级的父级,直到任何返回 true),它仍然使框架最终处于 Activity 状态,只是按钮不会有机会响应鼠标单击。

关于java - 如何实现在窗口激活之前禁用的 Java/Swing 控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45777932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com