gpt4 book ai didi

java - 从 JButton 菜单中单击 JLabel 时,图像不出现 (java)

转载 作者:太空宇宙 更新时间:2023-11-04 10:05:36 25 4
gpt4 key购买 nike

我的问题是从菜单中单击 jlabel 时图像不出现为什么当我点击菜单时没有出现图像?请帮忙。新人来了

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;

public class Lab05Part02 extends JFrame implements ActionListener{

JMenuItem b1,b2,b3;
JLabel bankImg;
ImageIcon img1 = new ImageIcon("aib.jpg");
ImageIcon img2 = new ImageIcon("BOI.jpg");
ImageIcon img3 = new ImageIcon("kbc.jpeg");

Lab05Part02(){

JMenuBar mb = new JMenuBar();

JMenu banks = new JMenu("Banks", false);

banks.add(b1 = new JMenuItem("AIB"));
b1.addActionListener(this);
banks.add(b2 = new JMenuItem("Bank of Ireland"));
b2.addActionListener(this);
banks.add(b3 = new JMenuItem("KBC"));
b3.addActionListener(this);

mb.add(banks);
setJMenuBar(mb);

JPanel p = new JPanel();

bankImg = new JLabel();

p.add(bankImg);
getContentPane().add(p);

setSize(500,500);
setVisible(true);


}//end of constructor

public static void main(String[] args){

Lab05Part02 myMenu = new Lab05Part02();


}//end of main method

public void actionPerformed(ActionEvent e){

Object source = new Object();

if(source == b1){

bankImg.setIcon(img1);

}
else if(source == b2){

bankImg.setIcon(img2);

}
else if(source == b3){

bankImg.setIcon(img3);

}

else{

bankImg.setText("Select Image from Menu");

}


}//end of listener method

}//end of class

我哪里出错了?在 else if 语句上?谁可以给我解释一下这个?我确实在每种情况下都设置了 setVisible(true) 但它不起作用。预先感谢您!

最佳答案

actionPerformed 方法中,您忘记从 ActionEvent e 获取源对象,而您刚刚创建了一个新对象:

Object source = new Object();

很明显,这样 source 不等于您的按钮之一的引用。

ActionEvent 对象包含事件源。为了解决该问题,请从 ActionEvent e 参数获取源对象:

Object source = e.getSource();

如果您的图像(“aib.jpg”、“BOI.jpg”和“kbc.jpeg”)位于正确的路径中,并且您的 ImageIcon img1、img2、img3 对象已成功填充,则可以进行上述修复。

但我可以建议,如果您不想在项目中显示图像和图标带来更多不便,最好将它们放在像 resources.images 这样的包下,并在那里创建一个 java 类,并将其命名为 Resources.java

然后您可以使用Resources.java的资源流创建图像,该资源流与图像和图标位于同一个包中:

package resources.images;

import java.net.URL;
import javax.swing.ImageIcon;

public class Resources {
public static ImageIcon getImageIcon(String name) {
URL imagePath = Resources.class.getResource(name);
return new ImageIcon(imagePath);
}
}

然后在你的代码中你可以编写

ImageIcon img1 = Resources.getImageIcon("aib.jpg");

而不是

ImageIcon img1 = new ImageIcon("aib.jpg");

这样,即使您将应用程序打包为 jar 文件,它也能正常工作。

希望这有帮助。

关于java - 从 JButton 菜单中单击 JLabel 时,图像不出现 (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52965381/

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