2015-03-27 3 views
1

Я пытаюсь показать изображение PNG с использованием графического интерфейса. Но у меня проблемы с отображением изображений. Я думаю, что я изолирован, где я возился в своих инструкциях, но не могу найти рабочего решения.JButton не отображает изображение значка в GUI

Я сказал в моей инструкции к ...

  • Установить заголовок кнопки Lab
  • Создание двух локальных переменных типа Icon: image1 и IMAGE2. Инициализируйте их новой базой ImageIcon на Image1 и Image2 - вот так: Иконка image1 = new ImageIcon (getClass(). GetResource («Image1.png»));
  • Инициализировать поле clickImage с новым ImageIcon, который основан на image3
  • Инициализировать поле imgButton с новым JButton, который принимает image1 в качестве единственного аргумента
  • вызова метода setRolloverIcon на imgButton и передать IMAGE2 в рулоне -Более значок
  • Добавьте к этому imgButton (ImageButton, который является JFrame)

Похоже, мне нужно создать метод для инициализации imgButton. Но если бы я сделал это, мне не нужно было бы создавать новую переменную для каждого изображения значков? Например,

imgButton = new JButton(image1); 
final JButton imgButton2 = new JButton(image2); 
final JButton imgButton3 = new JButton(image3); 

Любая помощь, которую я могу получить, будет очень признательна. Благодарю.

package ImageButton.Downloads; 

import javax.swing.Icon; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 

public class ImageButton extends JFrame 
{ 


    private final JButton imgButton; 
    private final Icon clickImage; 

    public ImageButton() 
    { 


     JFrame frame = new JFrame(); 
     frame.setTitle("Lab Button"); 

     Icon image1 = new ImageIcon(getClass().getResource("Image1.png")); 
     Icon image2 = new ImageIcon(getClass().getResource("Image2.png")); 
     clickImage = new ImageIcon(getClass().getResource("Image3.gif")); 

     imgButton = new JButton(image1); 

     imgButton.setRolloverIcon(image2); 



    } 


} 

package ImageButton.Downloads; 


import javax.swing.JFrame; 

public class ImageButtonApp 
{ 

    public ImageButtonApp() 
    { 
     // TODO Auto-generated constructor stub 
    } 

    public static void main(String[] args) 
    { 
     ImageButton imageButton = new ImageButton(); 

     imageButton.setSize(660, 660); 
     imageButton.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     imageButton.setVisible(true); 


    } 

} 

ответ

3

Вы создаете два JFrames, показывая один из них, но добавив ваше JButton к ни из них. Другими словами, ваш код игнорирует этот Rec:

Добавить в imgButton на это (ImageButton, который является JFrame)

Решение: использовать только один JFrame, ваш класс в соответствии с вашими инструкциями , добавьте к нему JButton или JPanel, который добавлен в JFrame, и отобразите его.

В частности, это изменить:

JFrame frame = new JFrame(); // extra JFrame that's never used! 
frame.setTitle("Lab Button"); 

к этому:

super("Lab Button"); 

и добавьте add(imgButton); в конце конструктора.

+0

А, я вижу. Теперь он отлично работает! – Mick

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