2016-07-06 7 views
1

In den Java Swing-Tutorials, in der How to Write an Internal Frame Listener Abschnitt bietet es Demo-Code, um die Ereignisse des Schließens oder Minimieren (Iconification) ein JInternalFrame-Fenster zu erfassen.Capture maximieren/wiederherstellen Ereignis in JInternalFrame

Das Ereignis der Maximierung und Wiederherstellung wird jedoch nicht in der Demo erfasst und es scheint keine Methode zu geben, um diese Ereignisse in der InternalFrameAdapter Klasse oder einem relativen Feld in der InternalFrameEvent zu erfassen.

Wie kann ich das Ereignis erfassen, das der Benutzer auf die Schaltfläche Maximieren/Wiederherstellen geklickt hat?

Antwort

2

Sie könnten in der Lage sein PropertyChangeListener zu verwenden und JInternalFrame#IS_MAXIMUM_PROPERTY:

//Add an internal frame listener so we can see 
//what internal frame events it generates. 
listenedToWindow.addInternalFrameListener(this); 

listenedToWindow.addPropertyChangeListener(evt -> { 
    String prop = evt.getPropertyName(); 
    JInternalFrame f = (JInternalFrame) evt.getSource(); 
    Object newValue = evt.getNewValue(); 
    if (JInternalFrame.IS_MAXIMUM_PROPERTY == prop) { 
    String prefix; 
    if (newValue == Boolean.TRUE) { 
     prefix = "Internal frame maximized : "; 
    } else { 
     prefix = "Internal frame minimized : "; 
    } 
    String s = prefix + f; 
    display.append(s + newline); 
    display.setCaretPosition(display.getDocument().getLength()); 
    } 
}); 
//...