Zeichnen im Applett

Status
Nicht offen für weitere Antworten.

Sladda

Aktives Mitglied
Hallo!

Kurze Anfängerfrage:

ich habe ein Applett mit vielen Bildchen (Images), JPanels, JLabels, etc... alles schick.

Ich möchte nun ein 100x200 großes Rechteck haben, in dem dynamisch an unterschiedlichen positionen, unterschiedlich viele Punkte angezeigt werden (und wieder verschwinden und wieder angezeigt werden...).

Wie würdet ihr das machen? Ich habe es mit nem Graphics-Object versucht, aber leider verschwindet mein gezeichnetes Rechteck immer sofort wenn die anderen Componenten geladen werden und man sieht es dann nicht mehr. (man sieht es nur gaaanz kurz)
Weiß jemand warum bzw. eine bessere Möglichkeit?

Vielen Dank

Sladda
 
uf :shock:
so ziemlich alles was ein applet ist, ist rechteckig und zeigt irgendwelche punkte an^^
geht es bitte ein kleines bisschen konkreter?
 
nein, also in meinem applett (1000x800) will ich ein Rechteck haben das die maße 100x200 hat. (z.B. an Position 100,100)
und innerhalb dieses Rechtecks, will ich Punkte in Linien erstellen, die sich verschieben...
eigentlich ist es ziemlich egal wie das genau aussieht, ich krieg das schon hin wenn ich nur nen ansatz habe.
Mein Problem oben habe ich nicht lösen können, wieso wird es bloß nur so kurz angezeigt?
 
Wo hast Du denn die Zeichenoperationen genau untergebracht?
Sie gehören in die paintComponent-Methode.

Gruß,
ROlf
 
ui, ich hab sie in der paint-methode...
ich probiere das aus mit der paintComponent-methode...
erstmal vielen Dank!
 
Code:
public class  Gui extends JApplet implements ActionListener{

also hab ich n JApplett !? Und nu ?
 
du solltest ein JPanel auf dein JAplett adden und von dem JPanel dann die paintComponent methode überschreiben.. gibt hier jede menge bsp.
 
Hallo nochmal!

Ich habe das nun so gemacht, leider wird es immer noch nicht angezeigt! Ich bin schon ganz verrückt..

Code:
public class ImagePanel extends JPanel {
	
	String path;
	Applet p;
	int x,y,w,h;
	
	public ImagePanel(String path, Applet p,int x, int y,int width, int height){
		this.path = path;
		this.p = p;
		this.x = x;
		this.y = y;
		this.w = width;
		this.h = height;
		this.setSize(this.w, this.h);
		this.setVisible(true);
	}

	protected void paintComponent(Graphics g){ 
		super.paintComponent(g); 
		Image img = p.getImage(p.getCodeBase(),this.path);
		if(img != null)
			g.drawImage(img,x,y,w,h,p);
		else
			System.out.println(this.path+" kann nicht geladen werden");
               } 	
}

und dann mach ich in meinem JApplet folgendes:
Code:
a = new ImagePanel("pics/a.jpg",this,200,200,50,50);
this.getContentPane().add(a);

Warum funktioniert es bloß nicht? Das Bild wird einfach nicht angezeigt. Der Pfad zum Bild stimmt!
Was mache ich noch falsch?

Vielen vielen Dank für Eure Hilfe !!
Sladda
 
danke für eure Antworten.
Leider bringen sie keinen Erfolg.
aus der Dokumentation geht hervor, dass paintComponent protected ist:
Code:
protected  void paintComponent(Graphics g) 
          Calls the UI delegate's paint method, if the UI delegate is non-null.
Und die Aussage von SirWayne verstehe ich nicht, wo vermische ich AWT und Swing? Ich benutze doch ein JApplet!

Hat sonst noch jemand eine Idee? Ich muss meine scheiss Bachelorarbeit am Dienstag abgeben und es hängt nur noch an diesem blöden Applet.... :roll:
 
Ich würde nur ein Image übergeben, so bist du unabhängig von einem Applet oder irgendeinem Pfad.
Und teste dein Applet erst mal soweit, dass es selbst ein Bild anzeigen kann.
Konkrete Codebeispiele zu genau diesem Thema finden sich auch im Forum.
 
wenn du nicht auf mich hören willst ok... ich seh von hier das bei dir da oben Aplett steht und nicht JAplett...
zeig mal deinen ganzen Code wer weiß was du noch so machst....

und wie oben schon gesagt es sollte eher so aussehen deine Klasse und zum testen würde ich halt mal feste werte nehmen... Außerdem weiß ich nicht was für ein LayoutManager du für dein Aplett benutzt jenachdem klappt setSize oder auch nicht.... es kann viele gründe haben...

ach ja noch was dein JPanel ist nach deinem Code 50 auf 50 groß.... und du zeichnest das Bild 200 und nach rechts und 200 nach unten ist doch klar dass es nirgends angezeigt wird....

Code:
public class ImagePanel extends JPanel {
   
   
   int x,y,w,h;
   Image image;

   public ImagePanel(Imgage imgae ,int x, int y,int width, int height){
      this.x = x;
      this.y = y;
      this.w = width;
      this.h = height;
      this.image = image;
      this.setSize(400, 400);
      this.setVisible(true);
   }

   protected void paintComponent(Graphics g){
      super.paintComponent(g);
      if(image != null)
         g.drawImage(img,0,0,300,300);
       else
         System.out.println(this.path+" kann nicht geladen werden");
                  
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben