gpt4 book ai didi

java - 为什么 JPanel 不显示 ImageIcon?

转载 作者:行者123 更新时间:2023-11-29 04:41:05 25 4
gpt4 key购买 nike

我有一个 GridBagConstraints gbcImage 和一个像这样初始化的 JLabel:

gbcImage.gridx = 1; // column 0
gbcImage.gridy = 2; // row 2
gbcImage.ipady = 100;
gbcImage.ipadx = 100;
JLabel label = new JLabel("", null, JLabel.CENTER);
label.setOpaque(true);
label.setBackground(Color.WHITE);
panel.add(label, gbcImage);

将面板添加到 JFrame 的位置。

所以我为标签实现了一个MouseListener:

public void mouseClicked(MouseEvent e) {
JFileChooser jfc = new JFileChooser();

int iRet = jfc.showOpenDialog(panel);
if (iRet == jfc.APPROVE_OPTION)
{
File file = jfc.getSelectedFile();

try
{
BufferedImage bi = ImageIO.read(file);
image = new ImageIcon(bi);
JLabel label = new JLabel("", image, JLabel.CENTER);
panel.add(label, gbcImage);
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
}

但是没有用。该图像在运行时不显示在面板中。

我错过了什么?

最佳答案

无需创建新的 JLabel。问题是您向面板添加了一个新标签,但其默认大小为 (0, 0),因为您没有reavalidate()repaint() 面板。

无需创建新标签。

相反,您保留对原始标签的引用(就像您对面板所做的那样),然后您只需替换图标:

image = new ImageIcon(bi);
label.setIcon( image );

关于java - 为什么 JPanel 不显示 ImageIcon?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39174600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com