Cette question est liée à ma précédente question How to generate Cartesian Coordinate (x,y) from GridBaglayout?Comment obtenir des coordonnées de l'image sur JPanel
j'obtenir avec succès les coordonnées de chaque photo, mais quand j'ai vérifié les coordonnées à (System.out.println) et le placement des images sur l'écran, il semble être faux. par exemple. si sur l'écran il était évident que le point x de la première image est sur la cellule 2 qui est sur la coordonnée de 20, mais le programme montre x = 1.
Voici une partie du code:
public Grid(){
setPreferredSize(new Dimension(600,600));
....
setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
gc.weightx = 1d;
gc.weighty = 1d;
gc.insets = new Insets(0, 0, 0, 0);//top, left, bottom, and right
gc.fill = GridBagConstraints.BOTH;
JLabel[][] label = new JLabel[ROWS][COLS];
Random rand = new Random();
// fill the panel with labels
for (int i=0;i<IMAGES;i++){
ImageIcon icon = createImageIcon("myPics.jpg");
int r, c;
do{
//pick random cell which is empty
r = (int)Math.floor(Math.random() * ROWS);
c = (int)Math.floor(Math.random() * COLS);
} while (label[r][c]!=null);
//randomly scale the images
int x = rand.nextInt(50)+30;
int y = rand.nextInt(50)+30;
Image image = icon.getImage().getScaledInstance(x,y, Image.SCALE_SMOOTH);
icon.setImage(image);
JLabel lbl = new JLabel(icon); // Instantiate GUI components
gc.gridx = r;
gc.gridy = c;
add(lbl, gc); //add(component, constraintObj);
label[r][c] = lbl;
}
J'ai vérifié les coordonnées de ce code:
Component[] components = getComponents();
for (Component component : components) {
System.out.println(component.getBounds());
}
Merci ... dans mon cas, je suppose que le gridbagconstraint ... Je voulais que la coordonnée suive la coordonnée JPanel et pas tout l'écran, donc je l'ai revérifié, je l'ai corrigé en changeant gc.fill = GridBagConstraints. AUCUN au lieu de BOTH – Jessy