Использование jWindow в качестве экрана spla sh, который показывает хорошо, но изображение не рисует ... просто пустое окно jWindow открыто ... есть мысли? - PullRequest
1 голос
/ 02 августа 2020
  1. jWindow открылось на 2 секунды, но изображение не отображается ... какие-либо мысли?
  2. файл изображения находится в той же папке, что и файл класса ...
public class CreateSplashScreen extends JWindow {
    JWindow jw = new JWindow();
    Image scImage = Toolkit.getDefaultToolkit().getImage("testImage.png");
    ImageIcon imageIcon = new ImageIcon(scImage);
    public CreateSplashScreen() {
        try {
            jw.setSize(700, 500);
            jw.setLocationRelativeTo(null);
            jw.setVisible(true);
        } catch (Exception e) {
        }
    }

    public void paint(Graphics g) {
       super.paint(g);
       g.drawImage(scImage, 0, 0, jw);
    }

    public void CloseSplashScreen() {
        jw.setVisible(false);
    }
    
    public static void main(String[] args) {
        CreateSplashScreen sp = new CreateSplashScreen();
        try {
            Thread.sleep(2000);
        } catch (InterruptedException ex) {
            Logger.getLogger(CreateSplashScreen.class.getName()).log(Level.SEVERE, null, ex);
        }
        sp.CloseSplashScreen();
    }
    
}
  1. jWindow открыто на 2 секунды, но изображение не отображается ... какие-либо мысли?
  2. файл изображения находится в той же папке, что и файл класса ...

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Снимок экрана с файловой структурой

@ Peter Для кода ошибки я удалил одну строку, которую добавил в файл mamifest.mf, и построил программу ... На этот раз не выдало мне ошибки, странно ... Я был следующий код ошибки, когда я его получил, и это привело меня к чему-то вроде раздела "CLASSPATH" кода, сгенерированного приложением ... извините, я не могу точно вспомнить. Очень признателен Петру за вашу помощь. Wi sh удачи ...

0 голосов
/ 02 августа 2020

Почему вы создаете внутренний JWindow, когда ваш класс CreateSplashScreen уже расширяет JWindow? В этом нет необходимости. Вы возитесь со своей программой.

Как? На самом деле вы просматриваете внутренний JWindow по jw.setVisible(true);, но рисуете изображение в CreateSplashScreen s `JWindow.

Попробуйте этот код:

public class CreateSplashScreen extends JWindow 
{
    ImageIcon i = new ImageIcon(getClass().getResource("/createsplashscreen/testImage.png"));
    
    public CreateSplashScreen() {
     setSize(700, 500);
     setLocationRelativeTo(null);
     setVisible(true);
    }

    @Override
    public void paint(Graphics g) {
     super.paint(g);
     g.drawImage(i.getImage(), 0, 0, null);
    }

    public void CloseSplashScreen() {
     setVisible(false);
    }
    
    public static void main(String[] args) {
        CreateSplashScreen sp = new CreateSplashScreen();
        try {
            Thread.sleep(2000);
        } catch (InterruptedException ex) {
            
        }
        sp.CloseSplashScreen();
    }    
}

Примечание: Я не знаю о вашем методе получения ресурса изображения из исходной папки.

Изменить: Предполагая, что имя пакета, содержащего ваш класс CreateSplashScreen, равно createsplashscreen, убедитесь, что изображение testImage.png присутствует в пакете createsplashscreen вашего проекта .

...