webForumDet fria alternativet

Splash screen

7 svar · 422 visningar · startad av Nickemannen

NickemannenMedlem sedan aug. 20003 524 inlägg
#1

Någon som har ett extremt simpelt och lätt exempel på en splashscreen??

jmeMedlem sedan maj 20011 967 inlägg
#2

Här har du...

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

public class Splash extends JFrame implements Runnable
{
	private int time;
	
	public Splash(int pSec)
	{
		time = pSec; 
		
		Thread t = new Thread(this);
		
		getContentPane().add(new JLabel("Hej, jag är en enkel splash screen") );
		
		setUndecorated(true); 
		setBounds(100, 100, 300, 300);
		
		setVisible(true);
		
		t.start();
	}
	
	public void run()
	{
		try
		{
			Thread.sleep( time * 1000);	// resultatet blir i sekunder
			setVisible(false);
		}
		catch(Exception e){ }
	}
	
	public static void main(String[] args)
	{
		new Splash(5);
	}
}
Aleph_OneMedlem sedan juni 2003370 inlägg
#3

Kan centrera lite snyggt med:

int mScreenHeight  = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
int mScreenWidth = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
int mSplashHeight = 300;
int mSplashWidth = 300;
setBounds(mScreenWidth/2-mSplashHeight/2, mScreenHeight/2-mSplashHeight/2, mSplashWidth, mSplashHeight);
NickemannenMedlem sedan aug. 20003 524 inlägg
#4

Jag vill ha en bild istället för text.. hur jag skapar ett bild objekt och så var inte så svårt men hur skall jag lägga till den till Jframen så att den visas ?

jmeMedlem sedan maj 20011 967 inlägg
#5

Du skapar metoden paint(Graphics g).

paint(Graphics g) är en metod som din klass (om din klass ärver från JFrame) ärver från klassen Component.

Metoden paint(Graphics g) i Component är tom, dvs man har låtit ärvande klasser implementera den på valfritt sätt. Detta måste du även göra.

Metoden paint(Graphics g) anropas varje gång JFrame i detta fall måste uppdateras. Men du kan även själv anropa metoden när du vill.

För att rita upp en bild så kan du göra på detta vis:

public void paint(Graphics g)
{
	g.drawImage(image, 100,100, this);
}

Du måste givetvis ha en bild objekt som heter image.

Ovanstående metod kan du klistra in i din klass, Den anropas minst en gång när ditt program startas. Den kommer då att rita upp bilden vid x = 100 och y = 100,

NickemannenMedlem sedan aug. 20003 524 inlägg
#6

,,

NickemannenMedlem sedan aug. 20003 524 inlägg
#7

Min bild kommer inte i mitten även om jag använder

int mScreenHeight = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
int mScreenWidth = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
int mSplashHeight = 300;
int mSplashWidth = 300;
setBounds(mScreenWidth/2-mSplashHeight/2, mScreenHeight/2-mSplashHeight/2, mSplashWidth, mSplashHeight);
Och ändrar dom till bildens storlek samt skriver 0,0 i draw.. den är för mycket åt höger :S.

Aleph_OneMedlem sedan juni 2003370 inlägg
#8

Nickemannen skrev:

Min bild kommer inte i mitten även om jag använder

int mScreenHeight = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
int mScreenWidth = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
int mSplashHeight = 300;
int mSplashWidth = 300;
setBounds(mScreenWidth/2-mSplashHeight/2, mScreenHeight/2-mSplashHeight/2, mSplashWidth, mSplashHeight);
Och ändrar dom till bildens storlek samt skriver 0,0 i draw.. den är för mycket åt höger :S.

Jag skrev lite fel i setBounds, första mSplashHeight ska vara mSplashWidth.

SKa du använda en bild så behöver du inte bry dig om storleken egentligen:

	public void display()
	{
		ImageIcon img = new ImageIcon("splash.jpg");
		getContentPane().add(new JLabel(img));
		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
		int screenh = (int)screen.getHeight();
		int screenw = (int)screen.getWidth();
		int splashh = img.getIconHeight();
		int splashw = img.getIconWidth();
		setBounds(screenw/2-splashw/2, screenh/2-splashh/2, splashw, splashh);
		setUndecorated(true);
		setVisible(true);
	}
Genererad på 372 ms · cache AV · v20260730165559-full.f96bc7eb