【问题标题】:How to stop JButton being enabled when mouse hovers over it?当鼠标悬停在 JButton 上时如何停止启用它?
【发布时间】:2012-11-21 06:24:20
【问题描述】:

我使用 NetBeans 创建了一个框架。框架有两个按钮 A 和 B。按钮 A 最初是禁用的。仅在单击按钮 B 时启用。

public newFrame() {    //newFrame is the name of the frame that has buttons A&B
    initComponents();

    btn_A.disable();
}

    private void btn_BActionPerformed(java.awt.event.ActionEvent evt)
{
    btn_A.enable();
}

问题是,当鼠标移到按钮 A 上时,按钮 A 变为活动/启用,即不管按钮 B 是否被单击。我该如何解决这个问题?

我希望仅在单击按钮 B 后才启用按钮 A,而不是由于任何其他事件。

【问题讨论】:

  • 按钮 B 在哪里,为了获得更好的帮助,请尽快发布 SSCCE,短可运行,可编译,大约两个 JButtons
  • 按钮 B 与按钮 A 在同一框架上。
  • button B is on the same frame as button A. 由您决定,然后所有答案都在这里回答您的问题
  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java swing netbeans jbutton


【解决方案1】:

使用btn_A.setEnabled(false) 而不是btn_A.disable()

【讨论】:

    【解决方案2】:

    btn_A.enable() 是一种已弃用的方法。
    要执行此任务,您可以将其替换为 btn_A.setEnabled(false); 以禁用该按钮,并将其替换为 btn_A.setEnabled(true); 以启用该按钮。

    另外,还有一个建议是,如果您觉得有问题发生,请在您的方法中添加如下语句:

        System.out.println("Some statement relevant to the method"); 
    

    这些额外语句的主要目的是让您知道该方法的实际执行时间。

    【讨论】:

      【解决方案3】:

      试试下面的代码:

      button. addMouseListener(new MouseAdapter() { 
            public void mouseEntered(MouseEvent me) { 
                  button.setEnable(true); 
            } 
      
            public void mouseExited(MouseEvent me) { 
                 button.setEnable(false); 
            } 
      
          }); 
      

      【讨论】:

      • 这有什么帮助? S/He 有一个明确的要求:在单击按钮 B 之前,应禁用按钮 A。单击按钮时,您会收到一个不错的事件 (ActionEvent),您可以使用 ActionListener 拦截该事件。为什么要选择鼠标监听器
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多