Java by API/java.beans/VetoableChangeListener
implements VetoableChangeListener
import java.awt.BorderLayout;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyVetoException;
import java.beans.VetoableChangeListener;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
public class MainClass {
public static void main(final String args[]) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JDesktopPane desktop = new JDesktopPane();
JInternalFrame palette = new JInternalFrame("Palette", true, true, true,
true);
palette.addVetoableChangeListener(new IconPolice());
palette.setBounds(350, 150, 100, 100);
desktop.add(palette, JDesktopPane.PALETTE_LAYER);
palette.setVisible(true);
frame.add(desktop, BorderLayout.CENTER);
frame.setSize(500, 300);
frame.setVisible(true);
}
}
class IconPolice implements VetoableChangeListener {
public void vetoableChange(PropertyChangeEvent ev) throws PropertyVetoException {
String name = ev.getPropertyName();
if (name.equals(JInternalFrame.IS_ICON_PROPERTY) && (ev.getNewValue() == Boolean.TRUE)) {
System.out.println("JInternalFrame.IS_ICON_PROPERTY");
}
}
}