JPanel фоновое изображение - PullRequest
3 голосов
/ 30 мая 2010

Это мой код, он действительно находит изображение, поэтому меня это не касается, меня интересует, как сделать это изображение фоном панели. Я пытаюсь работать с графикой, но я не работаю, какие-либо идеи? пожалуйста ??

try {
            java.net.URL imgURL = MAINWINDOW.class.getResource(imagen);

            Image imgFondo = javax.imageio.ImageIO.read(imgURL);
            if (imgFondo != null) {
                Graphics grafica=null;
                grafica.drawImage(imgFondo, 0, 0, this);
                panel.paintComponents(grafica);
            } else {
            System.err.println("Couldn't find file: " + imagen);
            }

        } catch...

Ответы [ 2 ]

2 голосов
/ 30 мая 2010

В вашем коде есть ошибка. Вы устанавливаете grafica на null строку, прежде чем разыменовываете ее. Это, безусловно, выбросит NullPointerException. Вместо того, чтобы объявлять свой собственный объект Graphics, вы должны использовать тот, который передан методу, который вы будете использовать для рисования. Чтобы сделать это в Swing, вы должны реализовать метод paintComponent для рисования вашего изображения, примерно так:

  public void paintComponent(Graphics grafica) {
     grafica.drawImage(imgFondo, 0, 0, this); 
  }

Обратите внимание, что вы не хотите выполнять длительные задачи, такие как чтение файлов изображений с диска в потоке рисования. В приведенном выше примере предполагается, что вы уже загрузили imgFondo и сохранили его так, чтобы он был доступен в методе paintComponent.

0 голосов
/ 30 мая 2010

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

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

См. Фоновая панель для получения дополнительной информации об обоих подходах.

также, посмотрите раздел из учебника по Swing на Custom Painting .

...