我是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.
}
});