2012-05-15 16 views
7

mit Eclipse zu machen Java Applet. Jedes Mal, um es von der IDE zu starten, wird der Applet-Viewer in der oberen linken Ecke bei (0,0) angezeigt. Wie programmierst du es während der Entwicklung in die Mitte des Bildschirms? Ich weiß, wenn wir im Browser bereitstellen, können wir das Fenster nicht innerhalb des Applets ändern, da html den Ort bestimmt.Wie verschiebt man das Applet-Viewer-Fenster?

Antwort

7

Im Gegensatz zu den anderen Poster, ich denke, das ist eine sinnlose Übung und bevorzugen ihren Vorschlag, eine Hybrid-Anwendung/Applet zu machen, um die Entwicklung zu erleichtern.

OTOH - "Wir haben die Technologie". Der Container der obersten Ebene eines Applets im Applet-Viewer ist im Allgemeinen ein Window. Holen Sie sich einen Hinweis darauf, und Sie können festlegen, wo Sie möchten.

Versuchen Sie dieses (irritierende) kleine Beispiel.

// <applet code=CantCatchMe width=100 height=100></applet> 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.util.Random; 

public class CantCatchMe extends JApplet { 

    Window window; 
    Dimension screenSize; 
    JPanel gui; 
    Random r = new Random(); 

    public void init() { 
     ActionListener al = new ActionListener() { 
      public void actionPerformed(ActionEvent ae) { 
       moveAppletViewer(); 
      } 
     }; 
     gui = new JPanel(); 
     gui.setBackground(Color.YELLOW); 
     add(gui); 

     screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
     // change 2000 (every 2 secs.) to 200 (5 times a second) for REALLY irritating! 
     Timer timer = new Timer(2000, al); 
     timer.start(); 
    } 

    public void start() { 
     Container c = gui.getParent(); 
     while (c.getParent()!=null) { 
      c = c.getParent(); 
     } 
     if (c instanceof Window) { 
      window = (Window)c; 
     } else { 
      System.out.println(c); 
     } 
    } 

    private void moveAppletViewer() { 
     if (window!=null) { 
      int x = r.nextInt((int)screenSize.getWidth()); 
      int y = r.nextInt((int)screenSize.getHeight()); 
      window.setLocation(x,y); 
     } 
    } 
} 
+0

Ausgezeichnet. Ich hatte keine Ahnung, dass das möglich ist, tatsächlich habe ich es nie in Betracht gezogen. Ich danke Ihnen für das Teilen! – Ewald

+0

es funktioniert! Vielen Dank! –

2

Interessante Frage.

Ich habe keine zuverlässige Möglichkeit gefunden, AppletViewer zu beeinflussen, nicht ohne ein Skript unter Windows zu verwenden, um es aus einem Batch-Datei-Modus zu starten, und sogar das hat nicht so gut funktioniert.

Die Alternative besteht darin, Ihren Testcode zu schreiben, damit das Applet in einem JFrame startet, den Sie leicht zentrieren können.

eine main-Methode zu Ihrem Applet hinzufügen:

public class TheApplet extends JApplet { 

    int width, height; 

    public void init() { 
     width = getSize().width; 
     height = getSize().height; 
     setBackground(Color.black); 
    } 

    public void paint(Graphics g) { 
     g.setColor(Color.orange); 
     for (int i = 0; i < 10; ++i) { 
     g.drawLine(width/2, height/2, i * width/10, 0); 
     } 
    } 

    public static void main(String args[]) { 
     TheApplet applet = new TheApplet(); 

     JFrame frame = new JFrame("Your Test Applet"); 
     frame.getContentPane().add(applet); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(640,480); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
     applet.init(); 

    } 
} 

Dies sollte funktionieren, wenn ich etwas verpasst - ich Code aktualisiert arbeiten Ich habe auf meinem Rechner läuft.

+0

* "Interessante Frage." * Ich bin anderer Meinung, aber +1 für den Rest. –

+0

@AndrewThompson Ich verstehe deinen Standpunkt! Große technische Antwort dort, ich hatte keine Ahnung, dass man das tun könnte. – Ewald

Verwandte Themen