我的目的是在一个登陆窗口和主界面之间显示一个闪屏效果,登陆 闪屏 和.主界面分别写在一个.java文件里,分别为咯Login.java;Splash.java,Mainframe.java现在的问题是如果我把闪屏这个.java文件单独运行可以显示得很正常
但是如果在login.java里调用这个闪屏就不能显示正常了,window窗口显示出来了,但是加载的图片没有显示出来闪屏我是通过在一个Window容器里加载一张图片来实现的
但是如果在login.java里调用这个闪屏就不能显示正常了,window窗口显示出来了,但是加载的图片没有显示出来闪屏我是通过在一个Window容器里加载一张图片来实现的
楼上的能共享一下你的源码让我看看吗?
或者发到我邮箱[email protected],谢谢
import javax.swing.*;public class SplashFrame extends JFrame{
public SplashFrame() {
Image imgSplash = Toolkit.getDefaultToolkit().getImage("splash.png"); ImagePane pnlImage = new ImagePane(imgSplash);
JWindow splashWindow = new JWindow(this);
Container pane = JWindow.getContentPane();
pane.add(pnlImage, BorderLayout.CENTER);
Dimension scmSize = Toolkit.getDefaultToolkit().getScreenSize();
int nImageWidth = imgSplash.getWidth(this);
int nImageHeight = imgSplash.getHeight(this);
splashWindow.setSize(nImageWidth, nImageHeight);
splashWindow.setLocation(scmSize.width / 2 - nImageWidth / 2,
scmSize.height / 2 - nImageHeight / 2);
splashWindow.show();
splashWindow.toFront();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.dispose();
} //public static void main(String[] args) {
// SplashFrame frm = new SplashFrame();
//}}class ImagePane extends JPanel {
private Image imgSplash; public ImagePane(Image image) {
MediaTracker mt = new MediaTracker(this);
mt.addImage(image, 0);
try {
mt.waitForID(0);
} catch (Exception e) {
e.printStackTrace(); }
this.imgSplash = image;
} public void paint(Graphics g) {
g.drawImage(imgSplash, 0, 0, this);
} public Dimension getPreferredSize() {
return new Dimension(imgSplash.getWidth(this), imgSplash
.getHeight(this));
}
}当把这个当作一个独立的程序来运行,闪屏显示正常
但是但我在另外LoginFrame.java里面new一个SplashFrame来显示就不能正常显示,只是显示一个灰白的Window窗体
....new Thread() {
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
splashWindow.dispose();
}
}.start();
还是不行,我想应该不是这个问题,因为我单独运行SplahFrame就显示很正常,谢谢你
我把图片文件和.java文件都放在一个目录的,应该不会找不到的
import javax.swing.*;class Adapter extends MouseAdapter { private final LoginPanel loginPane; /**
*
*/
public Adapter(LoginPanel loginPane) {
this.loginPane = loginPane;
} public void mouseClicked(MouseEvent e) {
((JFrame) this.loginPane.getParent().getParent().getParent()
.getParent()).dispose();
this.loginPane.showSplash();
}
}class LoginPanel extends JPanel {
public LoginPanel() { JLabel name = new JLabel("UserName:", SwingConstants.CENTER);
JLabel password = new JLabel("PassWord:", SwingConstants.CENTER);
JTextField txtName = new JTextField(20);
JPasswordField txtPwd = new JPasswordField(20);
JButton btnOK = new JButton("OK");
JButton btnCancel = new JButton("Cancel");
this.add(name);
this.add(txtName);
this.add(password);
this.add(txtPwd);
this.add(btnOK);
this.add(btnCancel);
btnOK.addMouseListener(new Adapter(this));
btnCancel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) { System.exit(0);
} }); } /**
*
*/
public void showSplash() {
new SplashFrame();
}
private JButton btnOK; private JButton btnCancel;
}
public class LoginFrame extends JFrame { public LoginFrame() {
setTitle("Login");
setSize(350, 150);
setLocation(300, 300);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().add(new LoginPanel());
/*UIManager.LookAndFeelInfo[] plafs = UIManager.getInstalledLookAndFeels();
try {
UIManager.setLookAndFeel(plafs[2].getClassName());
SwingUtilities.updateComponentTreeUI(this);
} catch (ClassNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (InstantiationException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}*/ } public static void main(String[] args) {
JFrame loginframe = new LoginFrame();
loginframe.show();
}
}