gpt4 book ai didi

Java - 更新JLabel的图标时,新图标放在旧图标后面

转载 作者:行者123 更新时间:2023-12-01 20:52:59 30 4
gpt4 key购买 nike

我想做的是创建一个 GUI,允许您选择图像、显示图像,然后针对学校项目对其执行操作。这就是启动时发生的情况。 enter image description here完美的!但是,当我更新图标时,它将新图标放在其后面:enter image description here

这是我在 Jlabel 上使用的代码:

ImageIcon imageIcon = new ImageIcon();
try {
imageIcon = new ImageIcon(ImageIO.read(new File("/Users/ryanauger/Repos/JavaGUI/GUI/Images/cameraIcon.png")));
} catch (IOException e2) {
// TODO Auto-generated catch block
imageIcon = new ImageIcon();
e2.printStackTrace();
}
JLabel lblNewLabel = new MyJLabel(imageIcon);

lblNewLabel.setBounds(0, 6, 600, 600);
frame.getContentPane().add(lblNewLabel);

JButton btnNewButton = new JButton("Pick Image File");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser jfc;
jfc = new JFileChooser();
File f = new File(System.getProperty("user.dir"));
jfc.setCurrentDirectory(f);
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
jfc.showOpenDialog(btnNewButton);
File selFile = jfc.getSelectedFile();

try {

lblNewLabel.setIcon(new ImageIcon(ImageIO.read(new File(selFile.getAbsolutePath()))));
} catch (IOException e1) {
// TODO Auto-generated catch block
System.out.println(selFile.getAbsolutePath());
e1.printStackTrace();

}



}
});

我是java新手,所以非常感谢任何帮助。谢谢!

编辑:这是 MyJLabel 的代码:

class MyJLabel extends JLabel
{
ImageIcon imageIcon;
public MyJLabel(ImageIcon icon)
{
super();
this.imageIcon = icon;
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(imageIcon.getImage(),0,0,getWidth(),getHeight(),this);
}
}

最佳答案

当你打电话时,这就是你的问题

JLabel lblNewLabel = new MyJLabel(imageIcon);

您将图标存储在自己的图标中,而不是将其传递给父类(super class)。所以当你绘画时,它会绘画相机。然后当你打电话时:

lblNewLabel.setIcon(new ImageIcon(ImageIO.read(new File (selFile.getAbsolutePath()))));

您实际上是在调用父类(super class)的 setIcon() 方法,您并没有更改本地存储的图标。然后父类(super class)绘制手机,就像它应该的那样,但您也在它上面绘制相机。

关于Java - 更新JLabel的图标时,新图标放在旧图标后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42868006/

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