Größe von Applet

Soviel wie ich weiß, hat das nichts mit einer IDE zu tun. Applet-Abmessungen lassen sich nur (bin mir fast sicher) über die HTML-Seite festlegen. Die "setSize(...)"-Methode dürfte leer implementiert sein.

Wenn Du die Applet-Größe mit 800x600 festlegen willst, ist mir schleierhaft, wozu Du eine HTML-Seite im Hintergrund brauchst, die Du dann bei 800x600er Auflösung eh nicht mehr siehst. :confused:

Mein Vorschlag wäre:
Code:
public class FrameApplet extends Applet {
 
public void init() {
Frame f = new Frame("Fenster");
f.setLayout(new FlowLayout());
f.add(new Label("Hallo hier bin ich"));
f.setSize(800,600);
f.setDefaultCloseOption(Frame.EXIT_ON_CLOSE);
}
 
public void start() {
f.setVisible(true);
}
 
}

CU schnuffie
 
Hmm, naja ich wollte es dann in einem Popup starten lassen, aber zu deinem Vorschlag:

JBuilder mag das irgendwie nicht, er sagt einen Fehler an bei dem EXIT_ON_CLOSE.
Und wie kann ich dann das paint in dem neuen Fenster ausführen?
 
Hmm, mit dem "EXIT_ON_CLOSE" hast Du Recht. Das scheint's erst bei Swing zu geben. Ist aber halb so wild: Laß es erstmal weg.

Jede Komponente (so auch Frame) hat die Methode "paint(Graphics g)". Die kannst Du natürlich zum Zeichnen verwenden.
Die Arbeit mit LayoutManangern macht die Sache natürlich einfacher. Die richten z.B. Textfelder oder Buttons automatisch aus. Befaß Dich doch einfach mal damit.

CU schnuffie;)
 
lalalalaa

Ok, hmm......keine Ahnung wie's geht :(

Wollt ich zwar nicht wegen den möglichen Reaktionen (auch berechtigte zum Teil denk ich mal) drauf aber ich sag einfach mal was ich vorhabe:

Also ich will kein Chat oder sonnstwas programmieren sondern, jetzt kommts, hab ich mir mal vorgenommen ein MMORPG zu programmieren. Jaja ich weis: Ich schaff das nicht alleine, ich kann nicht, weil ich gerade erst mit Java anfange, ich komm nicht weit etc. und was es da alles noch so für Einwände gibt :) Aber ich habe mir viele Gedanken über die Umsetzung gemacht und will jetzt einfach mal aus der "Wuschtraum"-Phase rauskommen und einfach mal probieren wie weit ich komme. Ich will's in der Ansicht von oben machen da eine 3D-Engine denk ich mal ganz schön viel schwiriger sein würde.

Als erstes Ziel habe ich mir vorgenommen zu schaffen das ich rumlaufen kann, mich drehen kann, etwas sagen kann etc. Da da das Kooridinaten-System eine wichtige Rolle spiel wollte ich gleich zu Anfang erstmal die Arbeitsfläche von der Größe her festlegen, auf 800x600, und nicht dann in der HTML das skalieren was denk ich mal Probleme bringen könnte.

Eine einfache Bewegung ist schon möglich aber drehen, skalieren etc. geht noch nicht und es nagt ganzschön an der Performence, kann mir zufällig jemand ne Tip geben?

Wenn ich es nicht schaffe, naja dann hab ich mir halt fürn Anfang zu viel vorgenommen, aber aus Fehlern lernt man ja bekanntlich :)

Zuerst wollt ich's in Flash machen weil da das Arbeiten mit Objekten um Tonnen einfacher ist. Aber das macht Probleme, weil die Datenbank-Anbindung dort recht doof zu realisieren ist...

Der derzeitige Code:
Code:
package mmorpg;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;

public class engine extends Applet {

  //Variablen für Datenbank

  private int self_x = 100;
  private int self_y = 100;
  private int self_width = 50;
  private int self_height = 50;
  private int self_a = 90;
  private int self_say;






  //Datenbank-Aktionen






  //DoubleBuffer
  private Image dbImage;
  private Graphics dbg;

  public void update (Graphics g)
  {
   // Initialisierung des DoubleBuffers
   if (dbImage == null)
   {
    dbImage = createImage (this.getSize().width, this.getSize().height);
    dbg = dbImage.getGraphics ();
   }

   // Bildschirm im Hintergrund löschen
   dbg.setColor (getBackground ());
   dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);

   // Auf gelöschten Hintergrund Vordergrund zeichnen
   dbg.setColor (getForeground());
   paint (dbg);

   // Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
   g.drawImage (dbImage, 0, 0, this);
  }





  // Bewegung
  public boolean keyDown (Event e, int key)
  {
   if (key == Event.UP){
    self_y -= 1;
   }

   if (key == Event.DOWN){
    self_y += 1;
   }

   if (key == Event.LEFT){
    self_x -= 1;
   }

   if (key == Event.RIGHT){
    self_x += 1;
   }

   return true;
  }






  //Game
  Image player_img;

  public void init(){
    player_img = getImage (getCodeBase (), "mmorpg/images/player.gif");
  }
  
  public void paint(Graphics g){

    setBackground (Color.black);
    g.drawImage(player_img, self_x, self_y, this);

    repaint();
  }

}
 
...ich find's eher Klasse, wenn sich Jemand ein größeres Projekt vornimmt. Klar, als blutiger Anfänger ist das eine Nummer zu groß.

Das mit dem Neuzeichnen ohne Flackern ist hier (http://download.javabuch.de/hjp3html.zip) im Java-Buch sehr gut beschrieben - ein ausgezeichnetes Buch, finde ich - und noch dazu kostenlos.

Schau mal unter dem Artikel "Doppelbufferung".

CU schnuffie
 
Doppelbuffer ist schon drinne, aber wenn ich z.B. Musik laufen habe und das Ding ausführe fängt die Muse an zu stottern :/

Aber danke für das Buch, werd ich mir bald mal vor die Nase halten!
 
Zuletzt bearbeitet von einem Moderator:
Hört sich nach "Riesenarbeit" für den Prozessor an.

Was hälst Du von dem Beispiel mit der Schlange: Nur das neu zeichnen, das sich auch ändert... (Javabuch)

CU schnuffie
 
Wo genau steht das?

Aber das Problem bei einem MMO ist das sind eigentlich immer etwas ändert, vorallem dann wenn sehr viele Spieler im Blickfeld sind...
 
Glaub ich habs gefunden:

Code:
  public void update(Graphics g)
 {
   //Double-Buffer initialisieren
   if (dbImage == null) {
    dbImage = createImage(
      this.getSize().width,
     this.getSize().height
    );
    dbGraphics = dbImage.getGraphics();
   }
   //Hintergrund löschen
   dbGraphics.setColor(getBackground());
   dbGraphics.fillRect(
    0,
     0,
     this.getSize().width,
     this.getSize().height
   );
   //Vordergrund zeichnen
   dbGraphics.setColor(getForeground());
   paint(dbGraphics);
   //Offscreen anzeigen
   g.drawImage(dbImage,0,0,this);
 }

Aber wenn ich das Fenster wärend dem Ausführen bewege zieht es immernoch einen Schweif hinter sich her...
 
Zurück