Использование панели изображений с банкой - PullRequest
1 голос
/ 05 декабря 2011

У меня проблемы с отображением моей панели изображений, когда я упаковываю ее в банку.Когда я запускаю проект из Eclipse, он отображается просто отлично.вот строка, которая создает ImagePanel:

ImagePanel panel = new ImagePanel(this.getClass().getClassLoader()
    .getResource("edu/luc/tictactoe/gui/resources/images/UIMM.png"));
frame.setContentPane(panel);

, а вот класс ImagePanel:

@SuppressWarnings("serial")
public class ImagePanel extends JPanel {

    BufferedImage img;

    public ImagePanel(URL url) {
        super(true);
        this.setToolTipText(url.getPath());
        try {
            img = ImageIO.read(new File(url.getPath()));
            this.setPreferredSize(new Dimension(
                img.getWidth(), img.getHeight()));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void paintComponent(Graphics g) {
        g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), null);
    }
}

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 05 декабря 2011
img = ImageIO.read(new File(url.getPath()));  // REMOVE!

Попробуйте вместо этого ..

img = ImageIO.read(url);

КСТАТИ - Когда дела идут не так, как надо, стоит не слепо спотыкаться о происходящем. Лучше использовать отладчик и проверить фактические переданные значения, или хотя бы использовать System.out.pritln() в качестве проверки работоспособности. Е.Г.

import java.net.URL;

class URLTest {

    public static void main(String[] args) throws Exception {
        URL url = new URL("jar:file:/C:/baz.jar!/COM/foo/Quux.class");
        System.out.println(url);
        System.out.println(url.getPath());
    }
}

выход

jar:file:/C:/baz.jar!/COM/foo/Quux.class
file:/C:/baz.jar!/COM/foo/Quux.class

Теперь скажи мне. Путь даже выглядит как имя файла / путь?

В случае сомнений. Распечатать.

0 голосов
/ 05 декабря 2011

вам нужно превратить его в банку, внутри папки, в которой вы его сделали, создайте папку с именем "edu" в этой папке с именем "tictactoe" в этом "графическом интерфейсе" в этих "ресурсах" в этом " images "и, наконец, в этом, сделать картину под названием" UIMM.png "

другими словами, создайте ту же структуру папок, что и в папке, в которой находится банка.

У меня тоже была такая же проблема p.s Я думаю, что вы используете Mac, если вы используете его, поставьте его вместе с приложением Jar Bundler, это лучший пакет для Mac

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...