import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.SplashScreen;
/**
*
* 应用程序启动的初始化窗口
*
* @author tfq
*
*
*/
public class ViewSplashScreen extends Thread {
public void run() {
try {
// 通过SplashScreen.getSplashScreen(),获取SplashScreen对象
SplashScreen splash = SplashScreen.getSplashScreen();
// 通过splash.createGraphics()画图对象;
Graphics2D g = splash.createGraphics();//这句报异常
// 设置启动图片字体的颜色
g.setColor(Color.green);
// SplashScreen在屏幕的位置,大小
// g.drawString(splash.getBounds().toString(),10,30);
// 在第一张启动图片上写"视房宝"
g.drawString("视房宝", 10, 50);
// SplashScreen的大小,当前显示的图片
// g.drawString(splash.getImageURL().toString(),10,70);
// 刷新以上内容到屏幕
splash.update();
Thread.sleep(1000);
// 下面的代码是在SplashScreen上显示一个3D效果的字符串
g.setComposite(AlphaComposite.Clear);
// 1 以矩形填充画图区域
g.fillRect(0, 0, (int) splash.getSize().getWidth(), (int) splash
.getSize().getHeight());
// 更改显示的图片
splash.setImageURL(Main.class.getResource("/SplashTest/beauty.jpg"));
int x = 30, y = 100;
String author = "tfq";
g.setFont(new Font("TimesRoman", Font.PLAIN, 30));
g.setPaintMode(); // 3
for (int i = 0; i < 5; i++) {
g.setColor(new Color(200, 200, 0));
g.drawString(author, x + i, y + i - 1);
g.setColor(new Color(100, 100, 0));
g.drawString(author, x + i - 1, y + i);
}
g.setColor(Color.yellow);
g.drawString(author, x + 5, y + 5);
splash.update();
// 注意,这儿是sleep(10000),但实际上SplashScreen并没有显示10秒
Thread.sleep(10000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.awt.Dimension;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
new ViewSplashScreen().start();
try {
// 这儿决定SplashScreen显示时间长短.
Thread.sleep(3000);
} catch (Exception e) {
}
// 对于实际应用程序,这儿对应程序的初始化工作
JFrame frame = new JFrame("Java SE6 Splash Test");
frame.setPreferredSize(new Dimension(320, 240));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
1 个解决方案
#1
建议你在那句上下个段点,空指针错,一般是指 对象.方法 中的 对象为空,你这边就是splash为空,那么应该是前面那句
SplashScreen.getSplashScreen(); 没取到值
SplashScreen.getSplashScreen(); 没取到值
#1
建议你在那句上下个段点,空指针错,一般是指 对象.方法 中的 对象为空,你这边就是splash为空,那么应该是前面那句
SplashScreen.getSplashScreen(); 没取到值
SplashScreen.getSplashScreen(); 没取到值