【问题标题】:JButton .doClick() without doing anything?JButton .doClick() 什么都不做?
【发布时间】:2012-03-26 20:24:55
【问题描述】:

是否可以模拟单击按钮,类似于 doClick() 但只是图形模拟它,不生成任何 ActionEvent 。如果知道我可以扩展该类,请使用简单的 if 语句执行我自己的 doClick。但还有其他可能吗?

我想这样做是因为我有一个用户可以按下的按钮,但有时计算机(它在游戏中)会“按下”该按钮。所有逻辑都在另一个线程中完成,我只想为用户显示它。

【问题讨论】:

    标签: java swing jbutton


    【解决方案1】:

    如果您深入了解您正在使用的外观和感觉的细节,您可能会看到它如何检测并绘制处于“向下”状态的按钮,然后进行模拟?

    或者您可以扩展/实现 ButtonModel,并弄乱 setPressed/isPressed 状态?

    【讨论】:

    • 我认为最简单的解决方案是在 actionlistener 中检查模型,以检测它是手动印刷机还是计算机印刷机。但是,如果有任何解决方案可以仅以图形方式“单击”按钮,我仍然很有趣。
    【解决方案2】:

    我认为最简单的解决方案是检查 ActionListener 中的模型。

    我看不出区分两者的方法;该模型不知道谁调用了它的方法。相反,您可以保存所有侦听器,调用doClick(),然后恢复侦听器。看起来您必须检查操作、更改和项目侦听器。

    【讨论】:

      【解决方案3】:

      如果你想点击按钮试试这个:

      try
              {
                  robot = new Robot();
                  robot.mouseMove(0,500);
                  robot.mousePress(InputEvent.BUTTON1_MASK);
                  robot.mouseRelease(InputEvent.BUTTON1_MASK);
              }catch(Exception e){}
      

      但也许您更愿意在用户不应该点击时简单地禁用按钮

      Button.setEnabled(false);

      【讨论】:

      • 问题是我希望它看起来像点击,图形化。但不要生成任何动作(或者我可以在侦听器中“丢弃”的某种其他动作)。
      【解决方案4】:

      你可以设置是否启用,所以使用“buttonName.setEnabled(false);”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-08
        • 2016-12-24
        • 2017-04-18
        • 2011-08-03
        • 2014-05-11
        • 2014-09-10
        • 1970-01-01
        相关资源
        最近更新 更多