W
Will
I must be missing out on something fundamental . . . why doesn't the
following code ever register a PropertyChangeEvent?
import java.beans.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.text.*;
public class PropTest extends JFrame {
private Boolean myBoolean = Boolean.FALSE;
public PropTest() {
super("PropertyChangeListener Test");
JPanel panel = new JPanel();
JButton button = new JButton(new BooleanAction("Button pushed"));
button.setText("Push me!");
panel.putClientProperty("myBoolean", myBoolean);
panel.addPropertyChangeListener("myBoolean", new BooleanListener());
panel.add(button);
panel.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0),
"space");
panel.getActionMap().put("space", new BooleanAction("Space
pressed"));
this.getContentPane().add(panel);
}
private class BooleanAction extends AbstractAction {
String title;
public BooleanAction(String title) {
super();
this.title = title;
}
public void actionPerformed(ActionEvent e) {
System.out.println(title);
System.out.println("Old value: " + myBoolean.toString());
myBoolean = new Boolean(!myBoolean.booleanValue());
System.out.println("New value: " + myBoolean.toString());
}
}
private class BooleanListener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent e) {
System.out.println("Hey, you changed my value!");
}
}
public static void main(String[] args) {
PropTest propTest = new PropTest();
propTest.setResizable(false);
propTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
propTest.pack();
propTest.setVisible(true);
}
}
following code ever register a PropertyChangeEvent?
import java.beans.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.text.*;
public class PropTest extends JFrame {
private Boolean myBoolean = Boolean.FALSE;
public PropTest() {
super("PropertyChangeListener Test");
JPanel panel = new JPanel();
JButton button = new JButton(new BooleanAction("Button pushed"));
button.setText("Push me!");
panel.putClientProperty("myBoolean", myBoolean);
panel.addPropertyChangeListener("myBoolean", new BooleanListener());
panel.add(button);
panel.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0),
"space");
panel.getActionMap().put("space", new BooleanAction("Space
pressed"));
this.getContentPane().add(panel);
}
private class BooleanAction extends AbstractAction {
String title;
public BooleanAction(String title) {
super();
this.title = title;
}
public void actionPerformed(ActionEvent e) {
System.out.println(title);
System.out.println("Old value: " + myBoolean.toString());
myBoolean = new Boolean(!myBoolean.booleanValue());
System.out.println("New value: " + myBoolean.toString());
}
}
private class BooleanListener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent e) {
System.out.println("Hey, you changed my value!");
}
}
public static void main(String[] args) {
PropTest propTest = new PropTest();
propTest.setResizable(false);
propTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
propTest.pack();
propTest.setVisible(true);
}
}