JPanel を GridLayout (6,6)、ディメンション (600,600) に設定しました。グリッドの各セルには、幅と高さが異なる 1 つの画像が表示されます。画像は最初に JLabel に追加され、次に JLabel がセルに追加されます。
セルの座標ではなく、セル内の写真の座標を取得するにはどうすればよいですか? これまでのところ、画像がさまざまなサイズで表示されていても、画面上でも高さと幅が等しいこれらの座標を提供しています。
例えば
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]
gridBagLayout の代わりに GridLayout を使用した理由は、各写真に境界線を持たせたいからです。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]