gpt4 book ai didi

java - 如何从文件夹中的图像将图标设置为 JLabel?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:47:27 25 4
gpt4 key购买 nike

每当从 JComboBox 中选择一个项目时,我都试图从图像文件夹中为 JLabel 设置一个图标。 JComboBox 中项目的名称和文件夹中图像的名称相同。因此,无论何时从 JComboBox 中选择一个项目,都应将具有相同名称的相应图像设置为 JLabel 的图标。我正在尝试做这样的事情。

private void cmb_movieselectPopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt){                                                             
updateLabel(cmb_moviename.getSelectedItem().toString());
}





protected void updateLabel(String name) {
ImageIcon icon = createImageIcon("C:\\Users\\xerof_000\\Pictures\\tmspictures\\" + name + ".jpg");
if(icon != null){
Image img = icon.getImage();
Image newimg = img.getScaledInstance(lbl_pic.getWidth(), lbl_pic.getHeight(), java.awt.Image.SCALE_SMOOTH);
icon = new ImageIcon(newimg);
lbl_pic.setIcon(icon);
lbl_pic.setText(null);
}
else{
lbl_pic.setText("Image not found");
lbl_pic.setIcon(null);
}
}





protected static ImageIcon createImageIcon(String path) {
URL imgURL;
imgURL = NowShowing.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
return null;
}
}

我认为问题出在“C:\Users\xerof_000\Pictures\tmspictures\”中,我尝试使用“C:/Users/xerof_000/Pictures/tmspictures/”,但即使那样也不起作用。无论我做什么,它只会在 JLabel 上显示“找不到图像”。

最佳答案

这是我的目录结构:

                                packageexample
|
-------------------------------------------
| | |
build(folder) src(folder) manifest.txt
| |
swing(package) ComboExample.java
|
imagetest(subpackage)
|
ComboExample.class + related .class files

这是 ComboExample.java 文件的内容:

package swing.imagetest;    

import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
    
public class ComboExample {

private String[] data = new String[]{
"geek0",
"geek1",
"geek2",
"geek3",
"geek4"
};
private String MESSAGE = "No Image to display yet...";
private JLabel imageLabel;
private JComboBox cBox;
private ActionListener comboActions = 
new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
JComboBox combo = (JComboBox) ae.getSource();
ImageIcon image = new ImageIcon(
getClass().getResource(
"/" + combo.getSelectedItem() + ".gif"));
if (image != null) {
imageLabel.setIcon(image);
imageLabel.setText("");
} else {
imageLabel.setText(MESSAGE);
}
}    
};

private void displayGUI() {
JFrame frame = new JFrame("Combo Example");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

JPanel contentPane = new JPanel();
imageLabel = new JLabel(MESSAGE, JLabel.CENTER);
cBox = new JComboBox(data);
cBox.addActionListener(comboActions);

contentPane.add(imageLabel);
contentPane.add(cBox);

frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String... args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new ComboExample().displayGUI();
}
});
}
}

现在编译:

为了编译我这样做了:

Gagandeep Bali@LAPTOP ~/c/Mine/JAVA/J2SE/src/packageexample
$ javac -d build src/*.java

list 文件的内容:

enter image description here

JAR 文件创建:

Gagandeep Bali@LAPTOP ~/c/Mine/JAVA/J2SE/src/packageexample
$ cd build

Gagandeep Bali@LAPTOP ~/c/Mine/JAVA/J2SE/src/packageexample/build
$ jar -cfm imagecombo.jar ../manifest.txt *

现在将此JAR 文件 带到任何包含这些图像(geek0.gifgeek1.gifgeek2.gifgeek3.gifgeek4.gif)的位置,然后运行JAR文件,并查看结果:-)

关于java - 如何从文件夹中的图像将图标设置为 JLabel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15182329/

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