我是Java Swing开发的新手,我对如何处理以下情况有一些疑问。

我有一个custo LoginFrame类,该类扩展了经典的Swing JFrame类。

在我的课程中,我有一个JButton和一个单击按钮时将执行的方法,如下所示:

JButton loginButton = new JButton("Login");

@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    System.out.println("Button LogIn cliccked");
    System.out.println("SOURCE: " + e.getSource());

    if(e.getSource() == "loginButton"){
        System.out.println("BLABLABLA");
         String name = userNameTextField.getText();
         char[] pass = pswdTextField.getPassword();
         // your remaining operation...
    }


该方法可以正常工作,并且在Eclipse控制台中,打印消息“ cliccked Button ButtonIn cliccked”,但是我认为如果我有更多JButton对象,则该消息将始终打印...所以我尝试使用getSource方法,但是在方式似乎无法正常工作,因为无法识别“ loginButton”作为点击按钮的来源。

我也尝试通过此行打印源:

System.out.println("SOURCE: " + e.getSource());


输出为:

SOURCE: javax.swing.JButton[,6,152,95x30,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.synth.SynthBorder@1167e3a5,flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Login,defaultCapable=true]


仅当单击特定的loginButton时,我该怎么做才能执行某些操作?

最佳答案

将此if(e.getSource() == "loginButton")更改为if(e.getSource() == loginButton)。因为您的按钮对象从不等于字符串。

如果要与按钮标签进行比较,请尝试此操作。

if(e.getActionCommand().equals("Login")){

}


或者,您也可以这样使用。

    loginButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // your action.

        }
    });

10-02 00:55