Någon som har ett extremt simpelt och lätt exempel på en splashscreen??
Splash screen
7 svar · 422 visningar · startad av Nickemannen
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);
}
}
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);
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 ?
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,
,,
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.
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);
}