Как поместить изображение в jpanel с помощью GridBagLayout ()? - PullRequest
0 голосов
/ 30 сентября 2019

В настоящее время код:

JFrame frame = new JFrame("App");
frame.setSize(1200, 800);//Give it a size
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//Make it go away on close
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); //TU ZMIENIAC
frame.add(panel);//Add it to your frame

(...)
JPanel panelForm = new JPanel(new GridBagLayout());
panel.add(panelForm);

GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(10,10,10,10);
c.gridx = 0;
c.gridy = 0;
c.anchor = GridBagConstraints.LINE_END;
(...)
panelForm.add(label_pageCount, c);
c.gridy++;
try {
    URL url = new URL(JSONLists.thumbnail.get(page));
    BufferedImage image = ImageIO.read(url);
    JLabel label = new JLabel(new ImageIcon(image));
    panelForm.add(label);
} catch (Exception exp) {
    exp.printStackTrace();
}

В результате:

enter image description here

Каждый Jlabel правильно помещается в егоместо на сетке, кроме изображения, которое появляется в правом верхнем углу вместо назначенного места.

1 Ответ

2 голосов
/ 30 сентября 2019

В этой части:

try {
    URL url = new URL(JSONLists.thumbnail.get(page));
    BufferedImage image = ImageIO.read(url);
    JLabel label = new JLabel(new ImageIcon(image));
    panelForm.add(label); //here
} catch (Exception exp) {
    exp.printStackTrace();
}

вы добавляете компонент в контейнер без GridBagConstratints. Вот почему компонент не добавляется в нужном месте. Итак, изменив его на:

panelForm.add(label,c); //Add with constraints

, это исправит.

...