如何使用 GridBagLayout() 将图像放入 jpanel 中?

目前,代码是:


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();

}

结果是:

https://img.mukewang.com/65017dfb00012ea011740657.jpg

每个 Jlabel 都正确放置在网格上的适当位置,除了出现在右上角而不是指定位置的图像。



有只小跳蛙
浏览 101回答 1
1回答

慕丝7291255

在这一部分中: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会修复它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java