当前位置: 首页 > 知识库问答 >
问题:

单击事件时更改JButton

乐正育
2023-03-14

我正在尝试做一些非常简单的事情,在点击按钮时更改文本。

我似乎无法使用它,有人能告诉我添加ActionListener的正确位置吗?

主要类别

public class ATM implements ActionListener{

  public static void main(String[] args) {
      atmGUI gui = new atmGUI();        
      gui.login();      
  }
}

atmGUI类

public class atmGUI implements ActionListener {

public JTextField usernameField;
public JTextField pinField;
public String userName;
public int pin;

/**
 * @wbp.parser.entryPoint
 */

public void login() {

    JFrame frame = new JFrame();
    frame.getContentPane().setLayout(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 300);
    frame.setTitle("Virtual Bank Account");

    JLabel lblUsername = new JLabel("Username");
    lblUsername.setBounds(16, 88, 82, 16);
    frame.getContentPane().add(lblUsername);

    usernameField = new JTextField();
    usernameField.setBounds(13, 107, 124, 28);
    frame.getContentPane().add(usernameField);
    usernameField.setColumns(10);

    JLabel lblPin = new JLabel("PIN");
    lblPin.setBounds(16, 140, 61, 16);
    frame.getContentPane().add(lblPin);

    pinField = new JTextField();
    pinField.setBounds(13, 157, 124, 28);
    frame.getContentPane().add(pinField);
    pinField.setColumns(10);

    JButton btnLogin = new JButton("Login");
    btnLogin.setBounds(355, 232, 117, 29);
    btnLogin.addActionListener(new ActionListener(){
        btnLogin.setText("Clicked");
    });
    frame.getContentPane().add(btnLogin);


    frame.setResizable(false);
    frame.setAlwaysOnTop(true);
    frame.setVisible(true);

}

}

编辑:

这是产生的错误

类型new ActionListener(){}必须实现继承的抽象方法ActionListener.actionPerform(ActionEvent)

共有3个答案

令狐宏伟
2023-03-14

您需要将onActionPerform(ActionEvent)方法添加到您的atmgui类中,如下所示:

public void onActionPerformed(ActionEvent avt)
{
    //code to handle the button click
}

或者,您也可以在初始化JButton时使用它:

JButton b=new JButton("Click Me!" );
b.addActionListener(new ActionListener() {
    //handle the button click here
}
应志用
2023-03-14

您应该在atmGUI类中实现actionospace()方法来处理单击的操作。

隗瑞
2023-03-14

添加匿名函数

btnLogin.addActionListener(new ActionListener(){

       //do something
       //lblUsername.setText("blah blah");
    });

详情:

btnLogin.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent evt) {
                //do something
                //lblUsername.setText("blah blah");
            }
        });
 类似资料:
  • 问题内容: 此处使用复选框状态更新文本框值。我用来确认取消选中的操作。如果用户选择“取消”,则复选标记会恢复,但会在确认前触发。 这会使事情处于不一致状态,并且选中复选框时文本框会显示false。 如何处理取消并保持文本框值与检查状态一致? 问题答案: 在JSFiddle中进行了测试,可以满足您的要求。这种方法的附加好处是,当单击与复选框关联的标签时,可以触发。 更新的答案: 原始答案:

  • 问题内容: 我创建了一个扩展JDialog的类,其中有一些复选框和3个按钮:接受,取消和全选。 当用户单击全选时,应选中每个复选框,如果再次单击,则应取消选中每个复选框。效果很好,但我还希望按钮的文本在“全选”和“全选”之间切换。我在这里遇到了麻烦,因此当用户单击按钮并将文本更改为“取消全选”时,该按钮消失了。 我在这里将类简化为最简单的形式: 我看不出有什么问题。有什么帮助吗? 问题答案: 该按

  • 问题内容: 我正在为某个网站编写Greasemonkey脚本,该脚本有时会进行修改。 在页面上进行更改时,如何获取事件(通过或类似方式)?我还需要访问指向新的/修改的URL的文档的DOM。 我看到了其他涉及超时和轮询的解决方案,但如果可能的话,我想避免这种情况。 问题答案: popstate事件: 当活动历史记录条目更改时,将触发popstate事件。[…]popstate事件仅通过执行浏览器操作

  • 问题内容: 如何更改的上一个点击的时候? 我试图让3个按钮将样式分别更改为或或 我已经读过,但是我没有什么比我们只能 我发现Java中的字体类比应该的:S更复杂。 问题答案: 您需要调用not setStyle。 例如,如果要保留相同的字体,但更改名为“ field”的JTextField的样式,则可以执行以下操作: 编辑 要将字体设置为粗体和斜体,可以使用位图或位图: 请注意,这使用的是按位包含

  • 我正在使用android Studio模板中的android导航抽屉导航菜单。如何根据id导航到不同的活动。 我知道我错过了什么,但我找不到解决办法。有人能帮我吗?

  • 问题内容: 如标题所示,我想知道checkbox 和事件之间的区别(在jQuery中) 我已经读完了答案,复选框上的.click和.change有什么区别 但是,它对我不起作用。即使我在不​​失去焦点的情况下射击也会触发。 两者似乎都在工作。我在这里想念什么吗? 问题答案: 根据W3C,该事件是由键盘出于可访问性目的触发的: 为了给不使用鼠标的用户提供更好的用户体验,已经开发了浏览器来触发事件,即