2009-08-14 20 views
1

Ich benutze NetBeans 6.1 als meine primäre IDE, dort kann ich dieses Splash-Screen-Beispiel nicht ausführen, das von der Sonne gegeben wurde (Es löst eine NullpointerExeption). Aber ich kann dies über die Befehlszeile mit diesen Argumenten ausführen.Java SplashScreen

java -splash: filename.gif SplashDemo

Ich weiß nicht, wie Kommandozeilenargumente in NetBeans zu injizieren. Bitte jemanden helfen.

import java.awt.*; 
import java.awt.event.*; 

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); 
     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(); 
    } 
} 
+0

Wo wird die Ausnahme ausgelöst? – Zed

+0

Funktioniert der Splash-Screen in Eclipse –

Antwort

1

Gehen Sie zu Projekteigenschaften (Rechtsklick auf ein Projekt, und wählen Sie Eigenschaften). Wählen Sie "Ausführen" aus der Liste Kategorien. Dort können Sie die Argumente, VM-Optionen usw. einrichten.

+0

Danke, aber ich weiß, dass dies bereits für das ganze Projekt ist, ich frage nach einer einzigen Klasse. – Switch

+0

+1: funktioniert für mich (unter Eclipse), wenn ich die VM args richtig gesetzt habe (zB. -splash: imgfilename) Ich bin mir nicht sicher, ob wir verstehen, was du unter "Ich frage nach einer einzelnen Klasse" verstehe. Der Begrüßungsbildschirm dient zum Laden der gesamten JVM + Ihrer App. Ich glaube nicht, dass Sie es erreichen können, während Ihre App bereits läuft. –

Verwandte Themen