Moh*_*amy 1 java url netbeans splash-screen
我在 Oracle 文档中找到了一个关于 SplashScreen 的示例。问题是在这个例子中,这里使用的图像的链接在命令行中作为参数传递。我正在尝试更改代码,以便将链接写在里面,我不需要使用命令行。
methodesetImageURL(URL imageURL)应该能够为我完成这项工作,但它不接受我的参数(参数)。
我读过 URL 类,似乎它需要协议!像http和ftp这样的协议?如果是这样,我的 url 应该如何用于计算机中的文件?当我尝试从我的计算机(例如:)放置链接时,"C:\plash.gif"它说illege excape character
我什至尝试对图像使用 http 链接,但它在 URL 行中给了我这个错误:
non-static method setImageURL(URL) cannot be referenced from a static context
Run Code Online (Sandbox Code Playgroud)
这是代码:
package misc;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
public class SplashDemo extends Frame implements ActionListener {
static void renderSplashFrame(Graphics2D g, int frame) {
final String[] comps = {"foo", "bar", "baz"};
g.setComposite(AlphaComposite.Clear);
g.fillRect(120,140,200,40);
g.setPaintMode();
g.setColor(Color.BLACK);
g.drawString("Loading "+comps[(frame/5)%3]+"...", 120, 150);
}
public SplashDemo() {
super("SplashScreen demo");
setSize(300, 200);
setLayout(new BorderLayout());
Menu m1 = new Menu("File");
MenuItem mi1 = new MenuItem("Exit");
m1.add(mi1);
mi1.addActionListener(this);
this.addWindowListener(closeWindow);
MenuBar mb = new MenuBar();
setMenuBar(mb);
mb.add(m1);
URL link= new URL("http://docs.oracle.com/javase/tutorial/uiswing/examples/misc/SplashDemoProject/src/misc/images/splash.gif");
SplashScreen.setImageURL(link);
final SplashScreen splash = SplashScreen.getSplashScreen();
if (splash == null) {
System.out.println("SplashScreen.getSplashScreen() returned null");
return;
}
Graphics2D g = splash.createGraphics();
if (g == null) {
System.out.println("g is null");
return;
}
for(int i=0; i<100; i++) {
renderSplashFrame(g, i);
splash.update();
try {
Thread.sleep(90);
}
catch(InterruptedException e) {
}
}
splash.close();
setVisible(true);
toFront();
}
public void actionPerformed(ActionEvent ae) {
System.exit(0);
}
private static WindowListener closeWindow = new WindowAdapter(){
public void windowClosing(WindowEvent e){
e.getWindow().dispose();
}
};
public static void main (String args[]) {
SplashDemo test = new SplashDemo();
}
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.net.MalformedURLException; must be caught or declared to be thrown
at misc.SplashDemo.main(SplashDemo.java:103)
Java Result: 1
BUILD SUCCESSFUL (total time: 4 seconds)
Run Code Online (Sandbox Code Playgroud)
什么也没有发生。
PS:我是 Java 的初学者,我使用的是 NetBeans IDE 7.2.1
启动画面可以在应用程序启动时显示,在 Java 虚拟机 (JVM) 启动之前。
Swing/AWT 显示第一个窗口后,闪屏窗口会自动关闭(也可以使用 Java API 手动关闭,见下文)。
如果您的应用程序打包在一个 jar 文件中,您可以使用
清单文件中的SplashScreen-Image选项以显示启动画面。
将图像放在 jar 存档中并在选项中指定路径。
路径不应有前导斜杠。例如,在 manifest.mf 文件中:
Manifest-Version: 1.0
Main-Class: Test
SplashScreen-Image: filename.gif
Run Code Online (Sandbox Code Playgroud)
SplashScreen 类提供用于控制启动画面的 API。这个类可用于
它不能用于创建启动画面。
如果在应用程序启动时未通过命令行或清单文件选项创建启动画面,
getSplashScreen 方法返回 null。
那么你的代码有什么问题?
不是
SplashScreen.setImageURL(link);
Run Code Online (Sandbox Code Playgroud)
好的
splash.setImageURL(link);
Run Code Online (Sandbox Code Playgroud)
错误的顺序:在你有一个飞溅对象之前设置 ImageUrl
URL link= new URL("http://docs.oracle.com/javase/tutorial/uiswing/examples/misc/SplashDemoProject/src/misc/images/splash.gif");
SplashScreen.setImageURL(link);
final SplashScreen splash = SplashScreen.getSplashScreen();
Run Code Online (Sandbox Code Playgroud)
正确:获取飞溅,然后设置 ImageUrl
短的
final SplashScreen splash = SplashScreen.getSplashScreen();
splash.setImageURL(link);
Run Code Online (Sandbox Code Playgroud)
long withcatch MalformedURLException摆脱错误
MalformedURLException : must be caught
final SplashScreen splash = SplashScreen.getSplashScreen();
if (splash == null) {
System.out.println("SplashScreen.getSplashScreen() returned null");
return;
}
URL link;
try {
link = new URL("http://docs.oracle.com/javase/tutorial/uiswing/examples/misc/SplashDemoProject/src/misc/images/splash.gif");
} catch (MalformedURLException ex) {
System.out.println("MalformedURLException link:77");
return;
}
try {
splash.setImageURL(link);
} catch (NullPointerException | IOException | IllegalStateException ex) {
System.out.println("NullPointer or IO or IllegalState setImageUrl:85");
return;
}
Run Code Online (Sandbox Code Playgroud)
识别本地图像文件和互联网上的图像文件之间的区别。我制作了一个本地的蓝色 splash.gif 文件。
程序如下。



并不总是得到错误 SplashScreen.getSplashScreen() returned null
final SplashScreen splash = SplashScreen.getSplashScreen();
if (splash == null) {
System.out.println("SplashScreen.getSplashScreen() returned null");
Run Code Online (Sandbox Code Playgroud)
您必须执行以下操作。
在属性中指向您的本地 .gif 文件:-splash:src/misc/images/splash.gif

| 归档时间: |
|
| 查看次数: |
2364 次 |
| 最近记录: |