Зададох своя JPanel на GridLayout (6,6), с размери (600,600). Всяка клетка от мрежата ще показва една картина с различни ширини и височини. Картината първо се добавя към JLabel, а JLabel след това се добавя към клетките.
Как може да се извлекат координатите на картините в клетките, а не координатите на клетките? Досега изходът дава тези координати, които са равни на височина и ширина, дори на екрана снимките се показват в различни размери.
e.g.
java.awt.Rectangle[x=100,y=100,width=100,height=100]
java.awt.Rectangle[x=200,y=100,width=100,height=100]
java.awt.Rectangle[x=300,y=100,width=100,height=100]
Причината, поради която използвах GridLayout вместо gridBagLayout е, че искам всяка снимка да има граница. Ако използвам GridBagLayout, решетката ще се разшири според размера на картината. Искам размерът на мрежата да бъде с фиксиран размер.
JPanel pDraw = new JPanel(new GridLayout(6,6));
pDraw.setPreferredSize(new Dimension(600,600));
for (int i =0; i<(6*6); i++)
{
//get random number for height and width of the image
int x = rand.nextInt(40)+(50);
int y = rand.nextInt(40)+(50);
ImageIcon icon = createImageIcon("bird.jpg");
//rescale the image according to the size selected
Image img = icon.getImage().getScaledInstance(x,y,img.SCALE_SMOOTH);
icon.setImage(img );
JLabel label = new JLabel(icon);
pDraw.add(label);
}
for(Component component:components)
{
//retrieve the coordinate
System.out.println(component.getBounds());
}
РЕДАКТИРАНО: Опитах това, но не работи :-(
for(Component component: pDraw.getComponents()){
System.out.println(((JLabel)component).getIcon());
}
Как мога да получа изход като този?
java.awt.Rectangle[x=300,y=100,width=50,height=40]
java.awt.Rectangle[x=400,y=400,width=60,height=50]