I have the following code from this link.. It uses Swing framework and a simple ChangeListener example.
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractButton;
import javax.swing.ButtonModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class StateListener {
public static void main(String args[]) {
JFrame jFrame = new JFrame("");
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Press Me");
ActionListener actionListner = new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
AbstractButton absButton = (AbstractButton) event.getSource();
boolean selected = absButton.getModel().isSelected();
System.out.println("Selected=" + selected + " \n");
}
};
ChangeListener changeListner = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent event) {
AbstractButton aButton = (AbstractButton) event.getSource();
ButtonModel aModel = aButton.getModel();
boolean armed = aModel.isArmed();
boolean pressed = aModel.isPressed();
boolean selected = aModel.isSelected();
System.out.println("Armed :" + armed + " - Pressed :" + pressed + " - Selected :" + selected);
}
};
button.addActionListener(actionListner);
button.addChangeListener(changeListner);
Container cPane = jFrame.getContentPane();
cPane.add(button, BorderLayout.CENTER);
jFrame.setSize(800, 500);
jFrame.setVisible(true);
}
}
my questions are :
1) when I click the Press Me
, the output is
Armed :true - Pressed :false - Selected :false
Armed :true - Pressed :true - Selected :false
Selected=false
Armed :true - Pressed :false - Selected :false
Armed :false - Pressed :false - Selected :false
I have only two calls to Listener
at lines 61 and 63 which are.
button.addActionListener(actionListner);
button.addChangeListener(changeListner);
The output should be
Selected=false
Armed :true - Pressed :false - Selected :false
but I am getting 4 lines of output, which I am unable to understand
2). Are the methods, addActionListener
and addChangeListener
part of JButton
Class since they are not overridden by ChangeListener or ActionListener?
Thanks, I am a newbie to using Swing Framework. Any help is much appreciated.