Zeichnen eines Rechtecks

  • Themenstarter Themenstarter zeichnen
  • Beginndatum Beginndatum
Z

zeichnen

Gast
Hi
ich habe ein problem bei meinem neusten projekt und zwar. Ich kann in mein graphics2D objekt nicht zeichnen ich bekomme zwar keine fehler meldungen trotzdem erscheint das rechteck nicht auf dem bildschirm.
Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import javax.swing.*;
import java.awt.event.KeyListener;

public class arcuz extends Frame //implements Runnable
{
  Graphics2D g2d;
  int posx=250, posy=50;
  //ich i=new ich(posx, posy, 1000, 50);
  
  public static void main(String[] args)
  {
    new arcuz();
  }
  
  public arcuz()
  {
    window win = new window();
    addKeyListener(new key());
  }
  
  
  class window extends Frame
  {
    public window()
    {
      addWindowListener(new WindowAdapter()
      {
        public void windowClosing(WindowEvent evt)
          {
            dispose();
          }
      } );
      setSize(500, 500);
      setVisible(true);
      setResizable(false);
    }


  }
  
  public void paint(Graphics g)
  {
    g2d = (Graphics2D) g;

    g2d.drawRect(posx, posy, 10, 10);
  }
  
  
  public class key implements KeyListener
  {
    public void keyReleased(KeyEvent e)
    {
      ;
    }
    public void keyPressed(KeyEvent e)
    {
      switch(e.getKeyCode())
      {
        case 119:
          posy+=-1;
          repaint();
          break;
          
        case 115:
          posy+=1;
          repaint();
          
        case 100:
          posx+=1;
          repaint();
          
        case 97:
          posx+=-1;
          repaint();
      }
    }
    
    public void keyTyped(KeyEvent e)
    {
      ;
    }
  }
}
 
Zuletzt bearbeitet von einem Moderator:
1) Klassen werden in CamelCase (mit großbuchstaben anfangend) benannt
2) Schlag dich nicht mit AWT-Altlasten herum, nimm wenigstens Swing
3) Was soll das neuzeichnen auslösen? Ruf mal bei keyPressed repaint() auf.
4) Was zum teufel ist "arcuz" und was ist "window"? Du überschreibest die paint-Methode des "arcuz", öffnest aber ein "window", welches keinen schimmer von irgendwelchen Rechtecken haben kann. Zumindest window oder arcuz muss weg.
5) Eigentlich muss beides weg. Leite nicht vom Fenster, sondern von einem JComponent ab, überschreib dort die paint-Methode, und füge dieses modifizierte JComponent dann in ganz normales JFrame rein.
 
Zuletzt bearbeitet:
wenn du nur schnell erfolg haben willst...(Rechteck zeichnen):

entferne[java=42]}[/code]
und füge in [java=50]}[/code] wieder ein
 
arcuz ist ein Frame der niemals angezeigt wird (keine Ahnung warum da "Frame" erweitert wird)
und window einer der zwar angezeigt wird, bei dem aber die paint-Methode nicht überschrieben wurde.

Um das Rechteck zu sehen hilft zum ersten der Tipp von jgh.

Um dann auch noch auf den KeyListener reagieren zu können,
muss der an "window" und nicht an "arcuz" gehängt werden.

Ich hoffe, das hilft schon mal weiter.

VG ROlf
 
arcuz ist ein Frame der niemals angezeigt wird (keine Ahnung warum da "Frame" erweitert wird)
und window einer der zwar angezeigt wird, bei dem aber die paint-Methode nicht überschrieben wurde.

Um das Rechteck zu sehen hilft zum ersten der Tipp von jgh.

Um dann auch noch auf den KeyListener reagieren zu können,
muss der an "window" und nicht an "arcuz" gehängt werden.

Ich hoffe, das hilft schon mal weiter.

VG ROlf
So hab das jetzt gemacht es wird nun zwar das rechteck angezeigt der keylistener funktionirt aber immer noch nicht.Hier der neue code:
Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import javax.swing.*;
import java.awt.event.KeyListener;

public class arcuz //extends Frame //implements Runnable
{
  Graphics2D g2d;
  int posx=250, posy=50;
  Graphics g1;
  //ich i=new ich(posx, posy, 1000, 50);
  
  public static void main(String[] args)
  {
    new arcuz();
  }
  
  public arcuz()
  {
    window win = new window();
    //addKeyListener(new key());
  }
  
  
  class window extends Frame
  {
    public window()
    {
      addWindowListener(new WindowAdapter()
      {
        public void windowClosing(WindowEvent evt)
          {
            dispose();
          }
      } );
      setSize(500, 500);
      setVisible(true);
      setResizable(false);
      //addKeyListener(new key());
    }
  
    public void paint(Graphics g)
    {
      g2d = (Graphics2D) g;

      g2d.drawRect(posx, posy, 10, 10);
    }
  
  /*public void draw()
  {
    g2d.drawRect(posx, posy, 100, 200);
  }*/
  
  
    public class key implements KeyListener
    {
      public void keyReleased(KeyEvent e)
      {
        ;
      }
      public void keyPressed(KeyEvent e)
      {
        switch(e.getKeyCode())
        {
          case 119:
            posy+=-1;
            System.out.println("W");
            repaint();
            break;

          case 115:
            posy+=1;
            repaint();

          case 100:
            posx+=1;
            repaint();

          case 97:
            posx+=-1;
            repaint();
        }
        repaint();
      }

      public void keyTyped(KeyEvent e)
      {
        ;
      }
    }
  }
}
 
versuch mal -gerade zum Anfang- mit Klassen sparsam umzugehen...hier mal der Versuch DEINEN Code irgendwie zum laufen zu bekommen:

Die Key-Tasten sind die Pfeile rechts, links, oben und unten.

Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class arcuz // implements Runnable
{
	Graphics2D g2d;
	int posx = 250, posy = 50;

	public static void main(String[] args) {
		new arcuz();
	}

	public arcuz() {
		window win = new window();
	}

	class window extends Frame {
		public window() {
			addWindowListener(new WindowAdapter() {
				public void windowClosing(WindowEvent evt) {
					dispose();
				}
			});
			setSize(500, 500);
			setVisible(true);
			setResizable(false);
			addKeyListener(new key(this));
		}

		public void paint(Graphics g) {

			g2d = (Graphics2D) g;
			g2d.drawRect(posx, posy, 100, 100);
		}
	}

	public class key implements KeyListener {
		int i = posx;
		Frame win;

		public key(Frame win) {
			this.win = win;
		}

		public void keyReleased(KeyEvent e) {
			;
		}

		public void keyPressed(KeyEvent e) {
			switch (e.getKeyCode()) {
			case 37:
				posx--;
				break;
			case 39:
				posx++;
				break;

			case 38:
				posy--;
				break;

			case 40:
				posy++;
				break;

			}
			win.repaint();
		}

		public void keyTyped(KeyEvent e) {
			;
		}
	}
}
 

Zurück
Oben