web-dev-qa-db-fra.com

Événement de redimensionnement de la fenêtre?

J'écris un programme de peinture simple en utilisant Java, et je veux qu'une méthode soit appelée chaque fois que le composant JFrame est redimensionné. Mais je ne trouve aucune méthode comme windowResizedListener ou un événement comme windowResizedEvent. Que puis-je faire?!

27
Ameer Jewdaki

Implémentez un ComponentAdapter avec componentResized():

frame.addComponentListener(new ComponentAdapter() {
    public void componentResized(ComponentEvent componentEvent) {
        // do stuff
    }
});
50
Yuval Adam

Le remplacement de méthodes particulières de ComponentAdapter est une alternative pratique à l'implémentation de toutes les méthodes de ComponentListener .

19
trashgod

Vous devez utiliser componentResized de ComponentListener .

3
Valentin Rocher

Pour accéder à l'événement de méthode de redimensionnement de la fenêtre, j'ai utilisé Implémenter ComponentListener dans une sous-classe. Il s'agit d'une classe JPanel personnalisée que vous pouvez utiliser pour écrire la taille de la fenêtre dans un JLabel à l'intérieur d'une interface graphique. Implémentez simplement cette classe dans votre méthode principale et ajoutez-la à votre JFrame et vous pouvez redimensionner la fenêtre et elle vous montrera dynamiquement la taille en pixels de votre fenêtre. (Notez que vous devez ajouter votre objet JFrame à la classe)

package EventHandledClasses;
import javax.swing.*;
import Java.awt.*;
import Java.awt.event.ComponentListener;
public class DisplayWindowWidth extends JPanel{
JLabel display;
JFrame frame;
public DisplayWindowWidth(JFrame frame){
        display = new JLabel("---");
        this.frame = frame;

        frame.addComponentListener(new FrameListen());
        add(display);
        setBackground(Color.white);
    }

    private class FrameListen implements ComponentListener{
        public void componentHidden(ComponentEvent arg0) {
        }
        public void componentMoved(ComponentEvent arg0) {   
        }
        public void componentResized(ComponentEvent arg0) {
            String message = " Width: " +
            Integer.toString(frame.getWidth());
            display.setText(message);

        }
        public void componentShown(ComponentEvent arg0) {

        }
    }
}
1
maximusg

Un exemple avec ComponentAdapter

//Detect windows changes
window.addComponentListener(new ComponentAdapter( ) {
  public void componentResized(ComponentEvent ev) {
   label.setText(ev.toString());
  }
});
0
Eduardo Oliveros