1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| // appeler le fichier Exemple098_JFrameAuxProportionsFixes.java
// par Nicolas_75, 10 juillet 2007
// pour http://www.developpez.net/forums/showthread.php?t=374961
import java.awt.event.*;
import javax.swing.JFrame;
public class Exemple098_JFrameAuxProportionsFixes extends JFrame {
public static final double INITIAL_WIDTH = 1024.0/1.5;
public static final double INITIAL_HEIGHT = 768.0/1.5;
// constructeur :
public Exemple098_JFrameAuxProportionsFixes() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize((int) INITIAL_WIDTH, (int) INITIAL_HEIGHT);
this.setLocationRelativeTo(null);
this.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
int currentWidth = getWidth();
int currentHeight = getHeight();
// si on garde la hauteur choisie par l'utilisateur,
// la largeur devrait devenir :
int objectiveWidth = (int) (currentHeight*INITIAL_WIDTH/INITIAL_HEIGHT);
// si on garde la largeur choisie par l'utilisateur,
// la hauteur devrait devenir :
int objectiveHeight = (int) (currentWidth*INITIAL_HEIGHT/INITIAL_WIDTH);
// entre "changer la hauteur", et "changer la largeur",
// on garde la solution qui n'augmente aucune dimension :
if (objectiveWidth < currentWidth) {
setSize(objectiveWidth, currentHeight);
} else {
setSize(currentWidth, objectiveHeight);
}
}
});
}
// "main" de démonstration :
public static void main(String[] args) {
new Exemple098_JFrameAuxProportionsFixes().setVisible(true);
}
} |
Partager