Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Da du kein Beispiel gepostet hast, kann man das schwer sagen...Habe ich den PropertyChangeListener richtig angewendet?
Der Vorteil eines PropertyChangeListeners ist der, dass du gezielt auf Aenderungen aller oder eines speziellen Properties reagieren kannst. Dabei hast du dann sowohl den alten als auch den neuen Wert zur verfuegung um eventuelle Ueberpruefungen durch zufuehren. Weiterhin kannst du auch mit einem VetoableChangeListener Aenderungen von ablehnen, beispielsweise wenn versucht wird einem Property ein Wert zuzuweisen, der ausserhalb eines bestimmten "Gueltigkeitsbereiches" liegt.Welche Vorteile bringt der PropertyChangeListener? Ich konnte leider keine erkennen!
import java.awt.Canvas;
import java.awt.FlowLayout;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Beann extends Canvas {
private static JCheckBox cb = new JCheckBox();
private static JRadioButton rb = new JRadioButton();
private String string = "";
private boolean activ = false;
private PropertyChangeSupport changes = new PropertyChangeSupport(this);
public void setActiv(boolean newActiv) {
boolean oldActiv = activ;
activ = newActiv;
changes.firePropertyChange("string", oldActiv, newActiv);
}
public boolean getActiv() {
return activ;
}
public void setString(String newString) {
String oldString = string;
string = newString;
changes.firePropertyChange("string", oldString, newString);
}
public String getString() {
return string;
}
@Override
public void addPropertyChangeListener(PropertyChangeListener l) {
changes.addPropertyChangeListener(l);
}
@Override
public void removePropertyChangeListener(PropertyChangeListener l) {
changes.removePropertyChangeListener(l);
}
public Beann() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setAlwaysOnTop(true);
f.setLocationByPlatform(true);
f.setLayout(new FlowLayout());
f.add(rb);
f.add(cb);
f.pack();
rb.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
setActiv(rb.isSelected());
}
});
f.setVisible(true);
cb.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
setActiv(cb.isSelected());
}
});
f.setVisible(true);
}
public static void main(String[] args) {
final Beann p = new Beann();
p.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
rb.setSelected(p.getActiv());
cb.setSelected(p.getActiv());
}
});
}
}