gpt4 book ai didi

java - 动态改变JLabel图标

转载 作者:行者123 更新时间:2023-12-02 04:18:53 24 4
gpt4 key购买 nike

那里有很多类似的主题,但是建议的解决方案都不适合我。

所以,我有一个空的JLabel在执行过程中的某个时候我想在上面添加一个图标。

String imageLocation = "/home/........" 
jLabel1.setIcon(new ImageIcon(imageLocation));

不工作。

图像的位置很好 ->

System.out.println(new java.io.File(imageLocation).exists());

true

最佳答案

因为图标是JLabel的绑定(bind)属性,所以setIcon()就足够了,如下所示。使用示例获取您的图标位置,并参见 有关常见问题的示例。

image

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.UIManager;

/**
* @see http://stackoverflow.com/a/33003415/230513
*/
public class Test {

private void display() {
Icon icon = (Icon) UIManager.getIcon("OptionPane.errorIcon");
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("Test", JLabel.CENTER){

@Override
public Dimension getPreferredSize() {
return new Dimension(2 * icon.getIconWidth(), 2 * icon.getIconHeight());
}
};
f.add(label);
f.add(new JButton(new AbstractAction("Add icon") {

@Override
public void actionPerformed(ActionEvent e) {
label.setIcon(icon);
}
}), BorderLayout.SOUTH);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}

public static void main(String[] args) {
EventQueue.invokeLater(new Test()::display);
}
}

关于java - 动态改变JLabel图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33003107/

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