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?!
Implémentez un ComponentAdapter
avec componentResized()
:
frame.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent componentEvent) {
// do stuff
}
});
Le remplacement de méthodes particulières de ComponentAdapter
est une alternative pratique à l'implémentation de toutes les méthodes de ComponentListener
.
Vous devez utiliser componentResized
de ComponentListener .
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) {
}
}
}
Un exemple avec ComponentAdapter
//Detect windows changes
window.addComponentListener(new ComponentAdapter( ) {
public void componentResized(ComponentEvent ev) {
label.setText(ev.toString());
}
});