Eröffnungsbildschimr

Status
Nicht offen für weitere Antworten.

legitas

Mitglied
Hi Leute

und zwar gehts um folgendes.

hab eine gui... und wenn ich diese starte soll ein Bild kommen, welches dann langsam verschwindet

mir fällt gerade nicht ein nach was ich suchen muss

danke für eure hilfe

mfg
 

The_S

Top Contributor
Forensuche verwenden. thE_29 hat imho einen Splashscreen gebaut und ihn auch hier rein gestellt. Seit Java 6 wird auch ein Splashscreen in Form eines Bildes von einem JAR aus unterstützt.
 

lhein

Top Contributor
laut dem Code muss das Bild im selben Verzeichnis wie die JAR bzw. die kompilierte Klasse liegen, wenn ich mich nicht täusche.

lr
 

Verjigorm

Top Contributor
omg, also wenn du das nicht selbst rausfindest, dann sollteste doch besser die Finger weglassen von solchen "anspruchsvollen" Aufgaben und erstmal kleinere Programme machen

Code:
private static final String SPLASHIMAGEPATH = new String("pix/images/splash.jpg");
 

legitas

Mitglied
Verjigorm hat gesagt.:
omg, also wenn du das nicht selbst rausfindest, dann sollteste doch besser die Finger weglassen von solchen "anspruchsvollen" Aufgaben und erstmal kleinere Programme machen

Code:
private static final String SPLASHIMAGEPATH = new String("pix/images/splash.jpg");

moep bitte nich beleidigen ;)...

("pix/images/splash.jpg"); <--- um das gehts mir... soll man da den normalen pfad eines bildes reinmachen oder wie?

mit z:\bilder\mehrbilder\logo.jpg <<---- so? das geht nicht
 

Verjigorm

Top Contributor
das war doch nicht beleidigend, das war feststellend :)
ich seh hier täglich leute die was riesiges machen wollen, aber nichtmal Grundlagen beherrschen
und hier konnte jemand OHNE Programmiererfahrung das Bild finden, da es auf .jpg endete und der variablenname darauf hinwies

der Pfad ist relativ zu dem Ordner im dem die Datei ausgeführt wird
also selbes Verzeichnis: "bild.jpg"
unterverzeichnis: "unterverzeichnis/bild.jpg" usw.

oder du gibst nen absoluten pfad mit z.B. "c:\\verzeichnis\\...bild.jpg" an, "\" müssen maskiert werden -> "\\"
 

Atze

Top Contributor
z:\bilder\mehrbilder\logo.jpg so gehts in java ja auch nich :) der backslash ist ein escape zeichen, entweder du benutzt in doppelt (\\) oder nutzt den normalen slash für pfadtrenner

also entweder

z:\\bilder\\mehrbilder\\logo.jpg

oder

z:/bilder/mehrbilder/logo.jpg
 

lhein

Top Contributor
Wow, nun bin ich verwirrt...

...und zwar hab ich hier den letzten code (letzter post) einfach mal gepastet...
http://www.java-forum.org/de/viewtopic.php?t=56806&highlight=splash+screen

und wenn Du mir in dem letzten Post noch zeigst, wo:
Code:
private static final String SPLASHIMAGEPATH = new String("pix/images/splash.jpg");
vorkommt, dann hauts mich ganz um.
Dich möcht ich nicht als Beifahrer haben, wenn Deine Navigation immer so läuft ;)

ggg
 

legitas

Mitglied
Jup thx, hatte vorher nur nen fehler im bildnamen deswegen gings net ;)...
funzt einwandrei

merci


oder... vll doch noch was... würde den gerne so langsam verschwinden lassen.. und dann das hauptprogramm aufrufen

:)

mfg
 

Atze

Top Contributor
ich glaub das wird nicht so einfach, es sei denn in java 6 gibts sowas auch schon vorgekaut :)
 

legitas

Mitglied
okeh zu hart :;)

andere sache

wenn ich nun mein progi starte ist das splash bild im hintergrund und das hauptprogramm vorne
würde lieber haben dass der splash kommt ich draufklicke und dann das hauptprogramm kommt

mfg
 

Atze

Top Contributor
ui, es wird ja immer komplizierter :D

na dann brauchtst du doch n eigenes fenster mit nem listener
 

legitas

Mitglied
Hi
hier mal grad mein splash zeugs, es geht der splash auf... läd nen progressbar, danach kommt ein neue fenster
sehe leider nicht raus wo ich auf mein programm linken sollen
mfg

Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.imageio.*;
import javax.swing.*;
import javax.swing.border.*;

public class SplashBar extends Frame {
	
    public SplashBar() {
        super("aa");
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                exitForm(evt);
            }
        });
        setSize(400,300);
        setLocationRelativeTo(null);
        URL url =  SplashBar.class.getResource("KleinLogo.jpg");
        Image image = null;
        if (url != null)
            try {image = ImageIO.read(url);} catch (IOException ex) {}
        splash = new Splash_( image, null, null);
        splash.setVisible(true);
        try {Thread.sleep(1000);} catch (InterruptedException ex) {}
        splash.showStatus(null, 10);
        try {Thread.sleep(1000);} catch (InterruptedException ex) {}
        splash.showStatus(null, 50);
        try {Thread.sleep(1000);} catch (InterruptedException ex) {}
        splash.close();
    }
    /** Exit the Application */
    private void exitForm(WindowEvent evt) {
        System.exit(0);
    }
    public static void main(String args[]) {new SplashBar().setVisible(true);}
    public static Splash_ splash = null;
}
class Splash_ extends JWindow {
    private JProgressBar progress;
    private Image imageSplash, imageBackground;
    private class UpdateStatus implements Runnable {
        public UpdateStatus(String status, int pc) {
            message = status;
            value = pc;
        }
        public void run() {
            progress.setValue(value);
            progress.setString(message);
        }
        private String message;
        private int value;
    }
    private class CloseSplashScreen implements Runnable {
        public void run() {
            setVisible(false);
            dispose();
        }
    }
    /**
     * SplashScreen erzeugen
     */
    public Splash_(Image coolPicture, String initialMessage, String title) {
        if(coolPicture != null){
            setSize(coolPicture.getWidth(this),coolPicture.getHeight(null)+25);
        }else{
            setSize(200,200);
        }
        setLocationRelativeTo(null);
        MyPanel myPanel=new MyPanel(getSize());
       
        Color fgX = new Color(85,43,0);
        JLabel labelT =new JLabel(title,JLabel.CENTER) ;
        labelT.setForeground(fgX);
        Dimension preferredSize1 = labelT.getPreferredSize() ;
        double height1 = preferredSize1.getHeight() ;
        double width1 = preferredSize1.getWidth() ;
        height1=height1+20;
        preferredSize1.setSize(width1, height1) ;
        labelT.setPreferredSize(preferredSize1);
        if (title != null) myPanel.add(labelT,BorderLayout.NORTH);
        progress = new JProgressBar(0,100);
        progress.setForeground(fgX) ;
        Dimension preferredSize = progress.getPreferredSize() ;
        double height = preferredSize.getHeight() ;
        double width = preferredSize.getWidth() ;
        height=height/2.0;
        preferredSize.setSize(width, height) ;
        progress.setString(initialMessage);
        myPanel.add(progress,BorderLayout.SOUTH);
//        progress.setStringPainted(true);    //progressbar mit Beschriftung
        progress.setPreferredSize(preferredSize); //schmalere progressbar
//        progress.setBorderPainted(false) ;    //progressbar ohne Rand
//        myPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
//        myPanel.setBorder(new LineBorder(fgX, 2));
        progress.setBackground(new Color(254,243,224)) ;
        getContentPane().add(myPanel);
        imageSplash = coolPicture;
        try {
            imageBackground = new Robot().createScreenCapture( getBounds() );
        } catch (AWTException ex) {
            ex.printStackTrace();
        }
       
    }
    /**
     * Den splash screen schliessen und alle resources freigeben die damit zusammenhängen.
     * Diese Methode ist thread safe und kann von jedem Thread aufgerufen werden.
     */
    public void close() {
        if (isVisible()) {
            SwingUtilities.invokeLater(new CloseSplashScreen());
        }
    }
    /**
     * Den splash screen sichtbar/unsichtbar machen.
     */
    public void setVisible(boolean show) {
        if (show) {
            pack();
            setLocationRelativeTo(null);
        }
        super.setVisible(show);
    }
    /**
     * Status der progressbar ändern.
     * Diese Methode ist thread safe und kann von jedem Thread aufgerufen werden.
     */
    public void showStatus(String message, int percent) {
        if (isVisible()) {
            SwingUtilities.invokeLater(new UpdateStatus(message, percent));
        }
    }
    class MyPanel extends JPanel{
        public MyPanel(Dimension size){
            setLayout(new BorderLayout());
            setPreferredSize(size);
        }
        public void paintComponent(Graphics g){
            super.paintComponent(g);
            if( imageBackground != null ) {
                g.drawImage( imageBackground, 0, 0, this );
            }
           
            g.drawImage( imageSplash, 0, 0, this );
        }
    }
}
 

legitas

Mitglied
okeh lösung gefunden ;)

ABER... wie kann ich mein programm also das hauptprogramm ind die mitte des monitors setzen?

mfg legi
 

Verjigorm

Top Contributor
mit setLocation(x,y)

etwa so:
Code:
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

		setLocation(d.width / 2 - x / 2, d.height / 2 - y / 2);
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben