JPanel - окно с кнопками - PullRequest
0 голосов
/ 23 января 2012

это базовый пример, который я получил для GUI из книги под названием Java. В Easy Steps я реализовал код в соответствии с примером, но изображения не отображаются.Что мне нужно сделать, чтобы он появился, из-за URL getClassLoader?

В идеале я хотел бы иметь возможность сохранить файл в моем рабочем пространстве и использовать этот файл как часть графического интерфейса пользователя.

import javax.swing.*;

class Buttons extends JFrame {

    JPanel pnl = new JPanel();
    ImageIcon tick = new ImageIcon("tickURL");
    ImageIcon cross = new ImageIcon("crossURL");

    JButton btn = new JButton("Click Me");
    JButton tickBtn = new JButton(tick);
    JButton crossBtn = new JButton("STOP", cross);

    ClassLoader ldr = this.getClass().getClassLoader();
    java.net.URL tickURL = ldr.getResource("tick.png");
    java.net.URL crossURL = ldr.getResource("cross.png");

    public Buttons(){

        super("Swing Window");
        setSize( 500, 200);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        add(pnl);
        setVisible(true);

        pnl.add(btn);
        pnl.add(tickBtn);
        pnl.add(crossBtn);

    }

    public static void main(String[]Args){

        Buttons gui = new Buttons();

    }

}

Ответы [ 2 ]

1 голос
/ 16 июля 2013

Я новичок в Java и просматривал тот же код из той же книги, с такими же плохими результатами (значки ни для одного блока кода не отображаются).Для невежественных (как и у меня) книга, казалось, говорила, что эти две иконки были доступны как часть пакета Java по умолчанию, что, конечно, неверно.

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

Так что оба метода, описанные выше, действительно работают, когда значки доступны.

Загрузки доступны здесь: http://ineasysteps.com/resource-centre/downloads/

1 голос
/ 23 января 2012
ClassLoader ldr = this.getClass().getClassLoader();
java.net.URL tickURL = ldr.getResource("tick.png");
java.net.URL crossURL = ldr.getResource("cross.png");

JPanel pnl = new JPanel();
ImageIcon tick = new ImageIcon(tickURL);     // <-- a URL is needed here, not a string
ImageIcon cross = new ImageIcon(crossURL);   // same here

JButton btn = new JButton("Click Me");
JButton tickBtn = new JButton(tick);
JButton crossBtn = new JButton("STOP", cross);
  1. загрузка ресурсов с помощью classLoader (если они находятся в вашем пути к классам),
  2. создайте свои иконки с этими активами,
  3. создайте свои кнопки с помощью этих значков

Так просто.

...