Wie die Koordinate des Gridlayout erhalten
-
20-09-2019 - |
Frage
Ich habe meine JPanel auf Gridlayout (6,6), mit Dimension (600600) Jede Zelle des Gitters wird man Bilder mit unterschiedlichen Breiten und Höhen anzuzeigen. Das Bild hinzufügen, zuerst zu einem JLabel und die JLabel dann zu den Zellen gegeben.
Wie kann die Koordinaten der Bilder in den Zellen wiedergewonnen und die Koordinate nicht von Zellen? Bisher ist die aus gibt diese, die gleiche Höhe koordinieren und Breite auch auf dem Bildschirm, die in verschiedenen Größen zeigten Bilder.
z.
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]
Der Grund, warum ich Gridlayout statt GridBagLayout verwendet wird, ist, dass ich mag, dass jedes Bild Grenze haben. Wenn ich GridBagLayout verwenden, wird das Raster entsprechend der Bildgröße erweitern. Ich möchte Rastergröße in fix Größe sein.
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());
}
EDITED: Ich habe versucht, dies aber nicht funktioniert: - (
for(Component component: pDraw.getComponents()){
System.out.println(((JLabel)component).getIcon());
}
Wie kann ich eine Ausgabe wie diese bekommen?
java.awt.Rectangle[x=300,y=100,width=50,height=40]
java.awt.Rectangle[x=400,y=400,width=60,height=50]
Lösung
Sie Ihre Bilder in der gewünschten Größe angezeigt werden?
ich denke so.
Wie auch immer, von dem, was Ihr Code zu tun scheint, ich denke, es wird die Etiketten der Größe und nicht die Größe Ikonen. JLabel, wie jede JComponent, ist in der Tat Container-Instanz. Als solches hängt ihre Größe auf Einschränkungen. Als Folge in einem Gridlayout, hat eine JLabel die Größe einer Zelle, während die enthaltene Symbol wird die Größe des Bildes hat.
Als consquence, die Bildgröße zu erhalten, müssen Sie ((JLabel) component).getIcon()
anrufen zu können, effektive Bild Dimension abgerufen werden.