JButton не отображает изображение значка в графическом интерфейсе

1

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

Мне сказано в моих инструкциях...

  • Установите заголовок на кнопку Lab
  • Создайте две локальные переменные типа Icon: image1 и image2. Инициализируйте их новой базой ImageIcon на Image1 и Image2 - вот так: Icon image1 = new ImageIcon (getClass(). GetResource ("Image1.png"));
  • Инициализируйте поле clickImage с помощью нового ImageIcon, основанного на Image3
  • Инициализируйте поле imgButton новым JButton, который принимает изображение1 как единственный аргумент
  • Вызовите метод 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);


    }

}
Теги:
user-interface
swing
icons
jbutton

1 ответ

3
Лучший ответ

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

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

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

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

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

к этому:

super("Lab Button");

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

  • 0
    Ах я вижу. Это прекрасно работает сейчас, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню