Как установить значок в JLabel из образа из папки?

Я пытаюсь установить значок в JLabel из папки изображений всякий раз, когда элемент выбирается из JComboBox. Имя элементов в 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 [email protected] ~/c/Mine/JAVA/J2SE/src/packageexample $ javac -d build src/*.java 

Содержание файла манифеста:

введите описание изображения здесь

JAR Создание файла:

 Gagandeep [email protected] ~/c/Mine/JAVA/J2SE/src/packageexample $ cd build Gagandeep [email protected] ~/c/Mine/JAVA/J2SE/src/packageexample/build $ jar -cfm imagecombo.jar ../manifest.txt * 

Теперь возьмите этот JAR File в любое место, имеющее эти изображения ( geek0.gif , geek1.gif , geek2.gif , geek3.gif а также geek4.gif ), и запустите JAR File и посмотрите результаты 🙂

Как описано в « Как использовать значки» , метод getResource() ожидает найти изображение в файле JAR вашей программы. Вам нужно будет переместить изображение в ваш проект. IconDemo – полный пример.

Поскольку вы используете jLabel, вы можете просто использовать HTML-tags, просто начните текст метки с помощью и используйте tags HTML в ярлыке как хотите, в случае тура: U может использовать это заменить : ). С улыбкой значок.

  /* Create an Image File whose size is 700 x 472 (pixels) in any image editor. Here Image was created using MS - Paint. Make sure that the Image File and the main file are in the same folder. The size of the JFrame should be set to 700 x 472 (pixels) in the program. Set the JLabel's IconImage. Add the JLabel to the JFrame. Set JFrame properties. Display JFrame. ------------------------------------------------------------------------------ label.setIcon(getClass().getResources(String name)); label.setIcon(new ImageIcon(String file)); These 2 methods, don't always work with us. So, we create a method "getImageIcon(File f)" that returns a new ImageIcon Object, everytime a new File Object is passed to it. */ import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JButton; import java.awt.Image; import javax.imageio.ImageIO; import java.io.File; import java.io.IOException; import javax.swing.ImageIcon; import static javax.swing.WindowConstants.*; public class ImageDemo { JFrame frame = new JFrame(); //initialized JLabel label = new JLabel(); //initialized JButton button = new JButton(); //initialized ImageIcon ii; //not initialized public void displayImage() { //Layout Type: Null Layout. label.setIcon(getImageIcon(new File("print.png"))); button.setBounds(150,150,358,66); //Note that sizes of the Image and Button are same. button.setIcon(getImageIcon(new File("Button.png"))); label.add(button); //add the button to the label frame.add(label); frame.setBounds(300, 50, 700, 472); //(300 x 50 = HorizontalAlignment x VerticalAlignment) //(700 x 472 = Width x Height) frame.setTitle("Image Demo"); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); //WindowConstants.EXIT_ON_CLOSE frame.setVisible(true); } public ImageIcon getImageIcon(File f) { try { Image im = ImageIO.read(f); ii = new ImageIcon(im); } catch(IOException i) { i.printStackTrace(); } finally { return ii; } } public static void main(String[] args) { ImageDemo id = new ImageDemo(); id.displayImage(); } } 
  • drag and drop jlabel вокруг экрана
  • Перетаскивание пользовательского объекта из JList в JLabel
  • Нарисуйте круг с радиусом и острием по краю
  • Почему я не должен называть setVisible (true) перед добавлением компонентов?
  • JTable повторяющиеся значения в строке
  • paintComponent не работает, если его вызывается рекурсивной функцией?
  • Минимизация Jinternal Frame без нажатия кнопки
  • Как определить несколько действий JButton из другого classа
  • Занятая петля в других затягиваниях streamа EDT
  • Случайные ошибки при смене серии с использованием JFreeChart
  • Рисовать с линиями в Java
  • Interesting Posts

    Powershell – сохранить вывод в файл без "…"

    Жадный против неохотного против властных квантификаторов

    Роль / цель ContextLoaderListener весной?

    Сплит 1GB Xml-файл с использованием Java

    Как временно копировать абсолютные ссылки на ячейки как относительные ссылки в Excel?

    Загрузите Windows Server 2003 без графической карты?

    Запуск 16-разрядного кода в 64-разрядной ОС с использованием виртуализации

    Пакеты не загружаются после установки visual studio 2015 RTM

    Скрытие и отображение вкладок в tabControl

    Какую версию окна можно виртуализировать?

    Emacs: отображение с использованием шестнадцатеричных escape-последовательностей

    Как устранить замораживание или медленность Windows?

    Что означает точка в конце `-rw-r-r-`? Как вы устанавливаете его с помощью `chmod`?

    Как динамически изменять размер UITableViewCell

    Запретить запуск Центра мобильных устройств при подключении устройства в Windows 7

    Давайте будем гением компьютера.