Zugriff auf paint(Graphics g)

drpingoo

Erfahrenes Mitglied
Hallo zusammen,

ich hab da in einer Klasse meines Programms die Methode paint(Graphics g). Da es sich um ein Spiel handelt (es handelt sich um das Spiel Mühle), würde ich gerne, nachdem ein Zug als gültig gewertet wurde, auch die Methode paint zugreifen und ein neues Rechteck setzen/zeichnen. Nun, mein Problem liegt genau bei diesem Zugriff. Beide Methoden (Methode Zug und paint) befinden sich in verschiedenen Klassen. Wenn ich nun von der Methode Zug darauf zugreifen möchte, muss ich ihm ein Grafikobjekt übergeben, das ich nicht habe... (siehe paint(Graphics g)). Ich weiss deshalb nicht, wie ich das Problem lösen soll. Habt ihr diesbzgl Vorschläge?

Lg
drpingoo
 
Gut, die hab ich gefunden:) Aber wie zeichne ich dann über g.fillRect(...) das Rechteck, da brauch ich ja ein Graphics Object. Also wie sag ich ihm, dass er bei paint() noch zusätzlich was machen muss. Oder hab ich da grad nen Brett vor dem Kopf?

Also mein Code sieht so aus:
PHP:
package muehle;


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




class MyPanel
extends Frame
{
    Player p;
    Board b = new Board();
    
      class ComponentRepaintAdapter extends ComponentAdapter{
          public void componentMoves(ComponentEvent event) {
            event.getComponent().repaint();
        }
          public void componentResized(ComponentEvent event){
              event.getComponent().repaint();
          }
      }
    


int the_size;
    

void hello(Board b){
    System.out.println("Jipiii");
}
  
  public void paint(Graphics g){
      Dimension screensize = getToolkit().getScreenSize();
      Dimension framesize = getSize();
      int xpunkt,ypunkt,laenge;
      
      int groesse = getSize().width-getInsets().top-getInsets().bottom;
     int groesse1=groesse/13;
     the_size=groesse1;
     int groesse2=groesse1/2;
     laenge=groesse1;
     for(int i=6*getInsets().left;i<groesse;i=i+6*groesse1){
         
         g.fillRect(i, getInsets().top,laenge , laenge);
         }
         
         for(int i=2*groesse1+6*getInsets().left;i<groesse-2*groesse1;i=i+4*groesse1){
             
             g.fillRect(i, 2*groesse1+getInsets().top,laenge , laenge);
             }

         for(int i=4*groesse1+6*getInsets().left;i<groesse-4*groesse1;i=i+2*groesse1){
             
             g.fillRect(i, 4*groesse1+getInsets().top,laenge , laenge);
             }
         for(int i=6*getInsets().left;i<groesse-8*groesse1;i=i+2*groesse1){
             
             g.fillRect(i, 6*groesse1+getInsets().top,laenge , laenge);
             }

         for(int i=8*groesse1+6*getInsets().left;i<groesse;i=i+2*groesse1){
             
             g.fillRect(i, 6*groesse1+getInsets().top,laenge , laenge);
             }
  
         for(int i=4*groesse1+6*getInsets().left;i<groesse-4*groesse1;i=i+2*groesse1){
             
             g.fillRect(i, 8*groesse1+getInsets().top,laenge , laenge);
             }
         
       
             
             for(int i=2*groesse1+6*getInsets().left;i<groesse-2*groesse1;i=i+4*groesse1){
                 
                 g.fillRect(i, 10*groesse1+getInsets().top,laenge , laenge);
                 }
             
             for(int i=6*getInsets().left;i<groesse;i=i+6*groesse1){
                 
                 g.fillRect(i, 12*groesse1+getInsets().top,laenge , laenge);
                 }

     //draw rectangles
   
             g.drawRect(groesse1/2+6*getInsets().left, groesse1/2+getInsets().top, groesse-groesse1-2*getInsets().left, groesse-groesse1-2*getInsets().left);
             g.drawRect(2*groesse1+groesse2+6*getInsets().left, 2*groesse1+groesse2+getInsets().top, groesse-5*groesse1-2*getInsets().left, groesse-5*groesse1-2*getInsets().left);
             g.drawRect(4*groesse1+groesse2+6*getInsets().left, 4*groesse1+groesse2+getInsets().top, groesse-9*groesse1-2*getInsets().left, groesse-9*groesse1-2*getInsets().left);
             g.drawLine(groesse2+6*getInsets().left, 6*groesse1+groesse2+getInsets().top,4*groesse1+groesse2 +6*getInsets().left, 6*groesse1+groesse2+getInsets().top);
             g.drawLine(8*groesse1+groesse2+7*getInsets().left, 6*groesse1+groesse2+getInsets().top,12*groesse1+groesse2+7*getInsets().left , 6*groesse1+groesse2+getInsets().top);
             g.drawLine(6*groesse1+groesse2+6*getInsets().left, groesse2 +getInsets().top, 6*groesse1+groesse2+6*getInsets().left,4*groesse1+groesse2+getInsets().top);
             g.drawLine(6*groesse1+groesse2+6*getInsets().left, 8*groesse1+groesse2+getInsets().top,6*groesse1+groesse2 +6*getInsets().left, 12*groesse1-groesse2+2*getInsets().top);
           
             
  }
  
  public MyPanel()
  {
    super("Mausklicks");
    addWindowListener(new WindowClosingAdapter(true));
    addMouseListener(new MyMouseListener());
    addComponentListener(new ComponentRepaintAdapter());
  }

  
  

  
  class MyMouseListener
  extends MouseAdapter
  {
      Player p;
        Board b = new Board();
    int cnt = 0;

    
    

    
    public void mousePressed(MouseEvent event)
    {
        
      Graphics g = getGraphics();
      //pancacke.paint(g);
      
      int x = event.getX();
      int y = event.getY();
      try {
        if (event.getClickCount() == 1) { //Gesicht
              
            ++cnt;
            //Kopf und Augen
            g.setColor(Color.red);
           g.fillRect(x-10, y-10, the_size, the_size);
            //Mund
           /* if (event.isMetaDown()) { //grimmig
               g.drawLine(x-5,y+7,x+5,y+7);
            } else {                  //lächeln
               g.drawArc(x-7,y-7,14,14,225,100);
            }*/
            //Zähler
          //  g.drawString(""+cnt,x+10,y-10);
          } else if (event.getClickCount() == 2) { //Brille
            g.drawLine(x-9,y-3,x+9,y-3);
          }
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
  }
}

Und dann möchte ich bsp. von einer KLasse Zug1 draufzugreifen (Pseudocode:)
PHP:
class Zug1{

MyPanel panel = new MyPanel();

void Zug(){

panel.paint(..); //und hier steckt genau das Problem, was für ein Paramerter übergebe ich hier?

}

}
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück