Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с заставкой, Проблема с заставкой на Swing 
:(
    Опции темы
MOFA
  Дата 25.6.2008, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 17.12.2006

Репутация: нет
Всего: нет



Есть класс, который выводит заставку перед запуском программы:

Код

package main.uiforms;

import main.uiforms.utils.ImgIcon;

import javax.swing.*;
import java.awt.*;

public class Splash {

    private JFrame splashFrame= new JFrame ();

    public Splash (String imgPath, Dimension imgSize) {
        
        ImgIcon ii = new ImgIcon();
        ImageIcon splashImg = ii.getImageIcon(imgPath, false);
        JLabel splashLabel = new JLabel (splashImg);

        Rectangle screenRect = splashFrame.getGraphicsConfiguration().getBounds();
        splashFrame.setSize(imgSize);
        splashFrame.setLocation (
                    screenRect.x + screenRect.width/2 - splashFrame.getSize().width/2,
                    screenRect.y + screenRect.height/2 - splashFrame.getSize().height/2);
        splashFrame.setUndecorated(true);

        Container splashContent = splashFrame.getContentPane();
        splashContent.setBackground(Color.white);

        splashContent.add(splashLabel);
    }

    public void showSplash (long time) {
        splashFrame.setVisible(true);
        Delay (time);
        splashFrame.setVisible(false);
    }

    private static void Delay (long time){

        try {
            Thread.sleep(time);
        }
        catch (InterruptedException e) {
            //e.printStackTrace();
            System.out.println(e.toString());

            long endTime= System.currentTimeMillis() + time;
            while (System.currentTimeMillis() < endTime ){}
        }
    }
}



Вызываю так:
Код

Splash mySplash = new Splash ("resources/images/splash.gif", new Dimension(560,300));
mySplash.showSplash (2300);


Выводит почемуто пустой фрейм, без изображения. Пробовал по этому пути файл изображения удалять, выдает ошибку, тоесть файл видит,но не выводит.
Давно уже мучаюсь, поэтому пишу.
Еще наверное нужен код этого класса:

Код

package main.uiforms.utils;

import javax.swing.ImageIcon;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;

public class ImgIcon {

    public ImgIcon() {}

    public ImageIcon getImage (String urlname)
    {
        Image img = null;

        try {

            URL url = this.getClass().getResource (((urlname.substring(0)== "/")?(""):("/")) + urlname);
            img = Toolkit.getDefaultToolkit().getImage (url);
        }
        catch (NullPointerException npe) {

            //TODO: lang variable
            System.err.println ("Зображення не знайдене");
        }

        return new ImageIcon(img);
    }

     public Image getImage (String urlname, boolean fullPath) {
        Image img = null;

        try {
            URL url = new PathUtil().getURL(urlname);
            //System.out.println(url);
            if (fullPath) {
                img = Toolkit.getDefaultToolkit().getImage (urlname);
            }
            else {
                img = Toolkit.getDefaultToolkit().getImage (url);
            }
        }
        catch (NullPointerException npe) {
            System.err.println ("Image [" + urlname + "] not found.");
        }

        return img;
    }

    public ImageIcon getImageIcon (String urlname, boolean fullPath) {

        return new ImageIcon (getImage(urlname, fullPath));
    }
}


PM MAIL   Вверх
Kangaroo
Дата 25.6.2008, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



В java 6 есть splash.

А по коду - ошибка где-то в загрузке изображения, сам вывод вроде правильный.


--------------------
Lost....
PM MAIL MSN   Вверх
MOFA
  Дата 27.6.2008, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 17.12.2006

Репутация: нет
Всего: нет



Переписал класс так, без лишних наворотов :
Код

package main.uiforms;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Rectangle;

public class Splash {

    private JFrame splashFrame= new JFrame ();

    public Splash (String imgPath, Dimension imgSize) {

        Rectangle screenRect = splashFrame.getGraphicsConfiguration().getBounds();
        splashFrame.setSize(imgSize);
        splashFrame.setLocation (
                    screenRect.x + screenRect.width/2 - splashFrame.getSize().width/2,
                    screenRect.y + screenRect.height/2 - splashFrame.getSize().height/2);
        splashFrame.setUndecorated(true);

        Container splashContent = splashFrame.getContentPane();

        ImageIcon splashImg = new ImageIcon(imgPath);
        JLabel splashLabel = new JLabel(splashImg);
        splashContent.add(splashLabel);
        splashContent.repaint();
        splashFrame.pack();
    }

    public void showSplash (long time) {
        splashFrame.setVisible(true);
        Delay (time);
        splashFrame.setVisible(false);
    }

    private static void Delay (long time){

        try {
            Thread.sleep(time);
        }
        catch (InterruptedException e) {
            long endTime= System.currentTimeMillis() + time;
            while (System.currentTimeMillis() < endTime ){}
        }
    }
}



Теперь вроде асе должно отображать. Но тем не менее показывает пустой фрейм без рамки, но и без картинки.
Картинку точно находит, я в отладке проверял!
Запустите у себя, пожалуйста. Уже пару дней мучаюсь, не могу понять в чем причина.
PM MAIL   Вверх
w1nd
Дата 27.6.2008, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 23
Всего: 54



MOFA, ваш код прекрасно работает, если подсунуть путь к существующей картинке. Хотя я бы его сократил:

Код
import java.awt.Dimension;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Splash {

    private JFrame splashFrame= new JFrame ();

    public Splash (String imgPath) {
        splashFrame.setUndecorated(true);
        splashFrame.setContentPane(
         new JLabel(
             new ImageIcon(imgPath)
         )
        );

        splashFrame.pack();
        splashFrame.setLocationRelativeTo(null);
    }

    public void showSplash (long time) {
        splashFrame.setVisible(true);
        Delay (time);
        splashFrame.setVisible(false);
    }

    private static void Delay (long time){
        try {
            Thread.sleep(time);
        }
        catch (InterruptedException e) {
        }
    }
    
}


Это сообщение отредактировал(а) w1nd - 27.6.2008, 23:53


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
MOFA
  Дата 28.6.2008, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 17.12.2006

Репутация: нет
Всего: нет



Спасибо за то что попробовали. В Вашем сокращении кода разобрался, переписал себе, за это тоже спасибо.
Но как не странно картинка всеравно не отображается, выскакивает фрейм без изображения.
Я пробовал задавать путь к другой картинке, причем другого размера. При этом размер фрейма меняется согласно размеру картинки,
но само изображение не появляется.
Что это может быть?
PM MAIL   Вверх
w1nd
Дата 28.6.2008, 03:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 23
Всего: 54



Цитата(MOFA @  28.6.2008,  00:39 Найти цитируемый пост)
Что это может быть?

А запустите демонстрационный пример из состава JDK - SwingSet. Там с картинками всё в порядке?


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
MOFA
Дата 28.6.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 17.12.2006

Репутация: нет
Всего: нет



Да, там с картинками все в порядке.
PM MAIL   Вверх
w1nd
Дата 29.6.2008, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 23
Всего: 54



А картинку откуда берёте? Это ресурс или внешний файл? В пути к архивам есть восклицательные знаки?


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
MOFA
Дата 29.6.2008, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 17.12.2006

Репутация: нет
Всего: нет



Это внешний файл, я в этом же приложении иконку поднимаю для главного окна.
Иконка нормально отображается. Иконка и эта картинка рядом лежат.
PM MAIL   Вверх
w1nd
Дата 29.6.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 23
Всего: 54



А что за картинка (тип)?


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
MOFA
Дата 1.7.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 17.12.2006

Репутация: нет
Всего: нет



GIF
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.