Here is a complete example that uses ObservedPanel
in a modeless dialog.
public class PropertyChangeDialog extends JPanel {
private JLabel label = new JLabel("null", JLabel.CENTER);
private ObservedPanel observed = new ObservedPanel();
public PropertyChangeDialog() {
this.setBorder(BorderFactory.createTitledBorder("Observer"));
this.add(label);
observed.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent e) {
if (e.getPropertyName().equals(ObservedPanel.PHYSICIST)) {
String value = e.getNewValue().toString();
label.setText(value);
}
}
});
}
private void display() {
JFrame f = new JFrame("PropertyChangeDialog");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this);
f.pack();
f.setLocationByPlatform(true);
f.setVisible(true);
JDialog dialog = new JDialog(f);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.add(observed);
dialog.pack();
dialog.setLocationRelativeTo(null);
dialog.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new PropertyChangeDialog().display();
}
});
}
}