java - 如何使用 JButton 更改 JLabel 中的图标

标签 java swing actionlistener jlabel imageicon

我正在制作一个简单的转换工具,将美元转换为欧元,反之亦然。

整个目的只是为了试验和学习这个很棒的工具 java。

我在顶部有一个带有欧元图标的 JLabel 来指示起始货币。我在下面有一个按钮,我想用它将该图标更改为一美元。

我目前正在使用 ActionListener 并尝试 setIcon/setIconImage 的不同变体(我能想到的每一次迭代都发现到目前为止没有任何效果)。


public class MoneyConverter extends JFrame implements ActionListener{
     //add label and icon showing base conversion currency
     JLabel startcur = new JLabel("<--- Starting Curency", new ImageIcon("C:\\Users\\Russel\\Desktop\\1euro.gif"), SwingConstants.CENTER);
     JButton euro = new JButton("Swap to Euro");
     JButton dollar = new JButton("Swap to Dollar");

然后我设置了一个

public MoneyConverter(){} 

方法并将我所有的组件添加到网格布局并将 ActionLister 添加到我的转换按钮。

例如

    dollar.addActionListener(this);
    euro.addActionListener(this);

在通常的代码之后(setVisible 和类似的代码,为了您的缘故我将省略,因为我不认为它会干扰它,请让我知道我是否应该包括所有代码)

public void ActionPerformed (ActionEvent e){
    Object source = e.getSource();
    if (source.equals(euro)){
         startcur.setIcon(new ImageIcon("C:\\Users\\Russel\\Desktop\\1.gif"));
    }
}

这部分已经改了很多次了,是这篇文章的主要原因,我如何在 JLabel 中更改这个图标? - 我还将在这里设置转换率,具体取决于他们选择以美元还是欧元开始。 (汇率不是实际汇率。)

最佳答案

首先,创建并存储一个新的ImageIcon

ImageIcon image = new ImageIcon(getClass().getResource("/nameOfImage.jpg"));

然后将其放入您的Action Listener

label.setIcon(image);
label.setText("");

您必须确保为您的项目设置了一个资源文件夹。您可以在 IntelliJ 中阅读如何执行此操作或 Eclipse

您还声明了 actionPerformed() 错误。我建议阅读 this你应该这样做。

@Override
public void actionPerformed(ActionEvent e)
{

}

通常,在 java 中,方法名以小写字母开头,类名以大写字母开头。

关于java - 如何使用 JButton 更改 JLabel 中的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36186834/

相关文章:

java - 第一次点击后禁用 JButton

java - 存储库模式的优点和 Spring 实现

java - 使用 Handler 在 EDT 和其他 Java 线程之间传递信息

java - 15个java益智游戏

java - 在 swing 中向图像添加滤镜

java - 是否可以动态添加 Swing 控制 Action 监听器?

java - 为什么这段代码一直循环? (ActionListener的概念)

Java:Java5枚举自定义序列化

java - 使用maven将JAR文件导入到spring

java - 在 Java 中比较多个数组中相应值的更好方法