2012-06-04 2 views
0

Я использую GUBuilder NetBeans для создания формы JPanel. Я добавил JLabel и использовал интерфейс NetBeans, чтобы дать ему значок из внешнего изображения (.png). Путь проверяется, и изображение отображается на экране GUIBuilder. Он появляется даже при нажатии кнопки «Предварительный просмотр». Он НЕ отображается, когда я запускаю проект. Остальная часть графического интерфейса выглядит так, как должна. Кто-нибудь из вас знает, почему это происходит и/или как его исправить?Netbeans ImageIcon не отображается

Многие из вас просили SSCCE. Поскольку код генерируется конструктором форм NetBeans, я вместо этого включил шаги, которые я предпринял для создания JLabel. Области фокуса окружены красным.

  1. Перетащите JLabel в Форм-Строитель. Drag and drop a JLabel into the Form Builder.

  2. Откройте меню свойств JLabel. Введите пустую строку ("") для поля text. Щелкните эллипсис рядом с icon. Open up the JLabel's properties menu. Click the ellipsis next to icon.

  3. Выберите внешний вид и щелкните эллипсис. Select External Image and click the ellipsis.

  4. Выберите изображение по своему усмотрению. В моем случае это .png. Select the image of choice.

  5. Обратите внимание, что изображение отображается в предпросмотре значка. Notice that the image appears in the icon preview.

  6. Закройте меню значков и меню свойств и обратите внимание, что изображение отображается в виде значка JLabel в Form Builder. Close the icon menu and the properties menu, and notice that the image appears on the Form Builder.

Благодарим Вас за прием неортодоксальную SSCCE и заранее спасибо за вашу помощь.

+0

Не могли бы вы добавить исходный код, где вы создаете экземпляр 'ImageIcon'? –

+0

изменить 156-ю строку в FrameView из setVisible (false) на setVisible (true), остальные изменения, которые я не вижу на своем магическом глобусе (low baterry), для лучшей помощи скорее опубликуйте [SSCCE] (http: // sscce ,org /) – mKorbel

+0

NetBeans GUIBuilder создает свой собственный исходный код, но здесь вы все равно: 'jLabel1.setIcon (новый javax.swing.ImageIcon (" C: \\ NoSpace \\ Minesweeper \\ Minesweeper graphics \\ one.png "));' – LastStar007

ответ

1

Я обнаружил, что трудный путь, который опирается на конструктор GUI Netbeans, чтобы сделать все для вас, является ошибкой.

Просто создайте класс выбора значков, как показано ниже, поместите значки в его пакет и используйте «Пользовательский код» вместо «Выбор изображения». Уверены, что значки не будут видны внутри NB. Но если они появятся, когда приложение запущено, кому это нужно.

package com.example.resource.icons; 

import javax.swing.ImageIcon; 

public class IconFetch { 

    private static IconFetch instance; 

    private IconFetch(){ 
    } 

    public static IconFetch getInstance() { 
     if (instance == null) 
      instance = new IconFetch(); 
     return instance; 
    } 

    public ImageIcon getIcon(String iconName) { 
     java.net.URL imgUrl = getClass().getResource(iconName); 
     if (imgUrl != null) { 
      return new ImageIcon(imgUrl); 
     } else { 
      throw new IllegalArgumentException("This icon file does not exist"); 
     } 
    } 

    public static final String MINESWEEPER_ONE = "one.png"; 
} 

Использование:

IconFetch.getInstance().getIcon(IconFetch.MINESWEEPER_ONE); 

Если значок все еще не появляется после попытки этого, то что-то может быть не так с тем, как вы заложили, компоненты в форме (ярлык есть, но вы не можете видеть это).

Надеюсь, это поможет, хотя это длинный выстрел.

2

У меня была такая же проблема, и решение predi тоже не работало. Затем я создал пакет вместо папки и добавил туда изображения, и теперь он работает.

Смежные вопросы