Rectangle verschieben

plammy

Bekanntes Mitglied
Hallo :).. Ich möchte ein speziellen Rechteckt ( bausteinRect ) auf ein JPanel zeichnen und denn danach mit dem Mouse verschieben können. Was mache ich falsch in meiner updateLocation()-Methode, dass sich der Rechteck nicht verschieben lässt?

Java:
public class EditPanel extends JPanel 
{
   
    private int xPos, yPos;
    boolean pressOut = false;
    
    
    Rectangle bausteinRect;
 
    Color grayRect = new Color(230,227,224);
    Color orangeRect = new Color(211,111,53);
    
    public  EditPanel()
    {

        
        /* ********************* Mouse Listener ***************************  */
        addMouseListener(new MouseAdapter() 
        {
           
            public void mousePressed(MouseEvent e) 
            {  
                xPos = bausteinRect.x - e.getX();
                yPos = bausteinRect.y - e.getY();
                
                if (bausteinRect.contains(e.getX(), e.getY()))
                {
                    updateLocation(e);
                    System.out.println("im Baustein");
                }
                else 
                {
                    pressOut = true;
                    System.out.println("auserhalb");
                }  
            }
            
            public void mouseReleased(MouseEvent e) 
            {
                  if (bausteinRect.contains(e.getX(), e.getY()))
                  {
                       updateLocation(e);
                       System.out.println("mouseReleased"); 
                  }
                  else
                  {
                      pressOut = false;
                  }
            }
            
        });

     
        /* ****************** Mouse Motion Listener ***********************  */
        addMouseMotionListener(new MouseMotionAdapter() 
        {
       
            public void mouseDragged(MouseEvent e) 
            {
              if (!pressOut)
              {
                updateLocation(e);
              }
              else
              {
                  
              }
           }
        });
        
   
    }

    public void updateLocation(MouseEvent e) 
    {
        bausteinRect.setLocation(xPos + e.getX(), yPos + e.getY());
        repaint();
  }

    protected void paintComponent(Graphics g) 
    {
        super.paintComponent(g);
  
            //baustein
            bausteinRect = new Rectangle(getX(),getY(),CreateFile.cf.bausteinW,CreateFile.cf.bausteinH);
            g.setColor(orangeRect);  
            g.fill3DRect(bausteinRect.x, bausteinRect.y, bausteinRect.width, bausteinRect.height,true);        
       
            
    }

}
 

Marco13

Top Contributor
bausteinRect = new Rectangle(getX(),getY(),CreateFile.cf.bausteinW,CreateFile.cf.bausteinH);

Sieht gefährlich aus. Erstens wird dadurch jede Änderung wieder "weggeworfen", und zweitens: Hast du die Methoden "getX()" und "getY()" selbst implementiert? Beachte, dass du damit die Methoden aus Component überschreibst! Bennenn' die ggf. um zu "getPosX/getPosY" oder so...
 

plammy

Bekanntes Mitglied
nein sind nicht selbstdefiniert.. ich greife auf die standartmethoden zu... da kann ich das auch mit 0,0 ersetzten... das ist aber nicht das Problem.. der rectangle baustein wird ja gezeichnet aber ich kann den nicht verschieben... :(
 
Zuletzt bearbeitet:
S

SlaterB

Gast
genialerweise löscht du in paintComponent das bisherige Rectangle,
bzw. setzt x/y des JPanels, welche ganz woanders sind, einfach nur ein Störsender

Java:
    Rectangle bausteinRect = new Rectangle(40, 40, 70, 70);


  ....


    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);

        // baustein
        g.setColor(orangeRect);
        g.fill3DRect(bausteinRect.x, bausteinRect.y, bausteinRect.width, bausteinRect.height, true);
    }
geht
 

plammy

Bekanntes Mitglied
Wenn ich das so mache wie du vorgeschlagen mit feste Daten funktioniert prima ;) aber wenn ich das so mache dass der user die größe per eingabe später bestimmen soll kriege ich folgende Fehler-Meldung



Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
at ltp.GUI.actionPerformed(GUI.java:180)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.NullPointerException
at ltp.EditPanel.<init>(EditPanel.java:29)
at ltp.CreateFile.<init>(CreateFile.java:23)
at ltp.CreateFile.<clinit>(CreateFile.java:24)
... 39 more


Java:
public class EditPanel extends JPanel 
{
 
    private int xPos, yPos; //Aktuelle Maus-Koordinaten
    boolean pressOut = false;
    
 
    Color grayRect = new Color(230,227,224);
    Color orangeRect = new Color(211,111,53);
    
    Rectangle bausteinRect = new Rectangle(0,0,CreateFile.cf.bausteinW,CreateFile.cf.bausteinH);
    
    public  EditPanel()
    {
/* ********************* Mouse Listener ***************************  */
        addMouseListener(new MouseAdapter() 
        {
           
            public void mousePressed(MouseEvent e) 
            {  
                xPos = bausteinRect.x - e.getX();
                yPos = bausteinRect.y - e.getY();
                
                if (bausteinRect.contains(e.getX(), e.getY()))
                {
                    updateLocation(e);
                    System.out.println("im Baustein");
                }
                else 
                {
                    pressOut = true;
                    System.out.println("auserhalb");
                }  
            }
            
            public void mouseReleased(MouseEvent e) 
            {
                  if (bausteinRect.contains(e.getX(), e.getY()))
                  {
                       updateLocation(e);
                       System.out.println("mouseReleased"); 
                  }
                  else
                  {
                      pressOut = false;
                  }
            }
            
        });

     
        /* ****************** Mouse Motion Listener ***********************  */
        addMouseMotionListener(new MouseMotionAdapter() 
        {
       
            public void mouseDragged(MouseEvent e) 
            {
              if (!pressOut)
              {
                updateLocation(e);
              
              }
              else
              {
                  
              }
           }
        });
        
   
    }

    public void updateLocation(MouseEvent e) 
    {
        bausteinRect.setLocation(xPos + e.getX(), yPos + e.getY());
        System.out.println("update");
        repaint();
  }

    protected void paintComponent(Graphics g) 
    {
        super.paintComponent(g);
   
            int centerX = getWidth()/2;     
            int beginPosition = (getHeight()-(CreateFile.cf.headerH + CreateFile.cf.contentH+ CreateFile.cf.footerH+CreateFile.cf.tile1H+CreateFile.cf.tile3H))/2;

            
            //header
            Rectangle headerRect = new Rectangle(centerX-CreateFile.cf.headerW/2,beginPosition,CreateFile.cf.headerW,CreateFile.cf.headerH);      
            g.setColor(grayRect);
            headerRect.translate(-CreateFile.cf.tile2W/2,CreateFile.cf.tile1H);
            g.fill3DRect(headerRect.x, headerRect.y, headerRect.width, headerRect.height,true);
            
//            MediaTracker mt = new MediaTracker(this);
//            img = Toolkit.getDefaultToolkit().getImage("C:\\Images\\szlogo.jpg");
//            mt.addImage(img,0);
//
//            g.drawImage(img,centerX-CreateFile.cf.headerW/2,beginPosition,this);
   
            //content
            Rectangle contentRect = new Rectangle(centerX-CreateFile.cf.contentW/2,beginPosition + CreateFile.cf.headerH,CreateFile.cf.contentW,CreateFile.cf.contentH);
            g.setColor(grayRect);
            contentRect.translate(-CreateFile.cf.tile2W/2,CreateFile.cf.tile1H);   
            g.fill3DRect(contentRect.x, contentRect.y, contentRect.width, contentRect.height,true);


            //footer
            Rectangle footerRect = new Rectangle(centerX-CreateFile.cf.footerW/2,beginPosition+CreateFile.cf.headerH+CreateFile.cf.contentH,CreateFile.cf.footerW,CreateFile.cf.footerH);
            g.setColor(grayRect);
            footerRect.translate(-CreateFile.cf.tile2W/2,CreateFile.cf.tile1H+CreateFile.cf.tile3H);   
            g.fill3DRect(footerRect.x, footerRect.y, footerRect.width, footerRect.height,true);


            //tile 1
            Rectangle tile1Rect = new Rectangle(centerX-CreateFile.cf.headerW/2-CreateFile.cf.tile2W/2,beginPosition,CreateFile.cf.tile1W,CreateFile.cf.tile1H);
            g.setColor(orangeRect);  
            g.fill3DRect(tile1Rect.x, tile1Rect.y, tile1Rect.width, tile1Rect.height,true);


            //tile 2    
            Rectangle tile2Rect = new Rectangle(centerX+CreateFile.cf.headerW/2-CreateFile.cf.tile2W/2,beginPosition+CreateFile.cf.tile1H,CreateFile.cf.tile2W,CreateFile.cf.tile2H);
            g.setColor(orangeRect);  
            g.fill3DRect(tile2Rect.x, tile2Rect.y, tile2Rect.width, tile2Rect.height,true);


            //tile3      
            contentRect.translate(0,CreateFile.cf.tile3H);
            Rectangle tile3Rect = new Rectangle(centerX-CreateFile.cf.headerW/2-CreateFile.cf.tile2W/2,beginPosition+CreateFile.cf.tile1H+CreateFile.cf.headerH+CreateFile.cf.contentH,CreateFile.cf.tile3W,CreateFile.cf.tile3H);
            g.setColor(orangeRect);  
            g.fill3DRect(tile3Rect.x, tile3Rect.y, tile3Rect.width, tile3Rect.height,true);


            //baustein
            
            g.setColor(orangeRect);  
            g.fill3DRect(bausteinRect.x, bausteinRect.y, bausteinRect.width, bausteinRect.height,true);        
       
            
    }

}
 
Zuletzt bearbeitet:
S

SlaterB

Gast
dein Wort 'später' drückt doch schon viele Informationen aus,
beim Init von EditPanel kannst du noch nicht auf CreateFile.cf zugreifen, selbst wenn es ohne Exception ginge hättest du sicher falsche Werte, nicht die spätere Eingabe,
also das Rectange wieder ändern

bisher hattest du allerdings schon beim ersten paint CreateFile.cf verfügbar, denkbar wäre also schon relativ früh,
beim Programmstart, zu initialisieren, das ist nur das Henne-Ei-Problem, welche Objekte sind wann da, wer greift worauf zu,
ich hoffe du weißt schon ungefähr, was ich bisher meine (auch wenn es nur offensichtliche Grundlagen alles Programme seind)
und kannst da bisschen was verbessern,

wenn später Benutzereingaben erfolgen, musst diese Information irgendwie übertragen, z.B. von einem Listener dort Aufruf an das EditPanel,
vielleicht nicht ganz einfach wenn da bisher keine Kommunikation besteht

------

eine ganz simple Lösung noch, nahe deiner ursprünglichen:
verwende erst 70,70 und setze in paintComponent nur breite/hoehe neu, ohne x,y zu ändern,

du kannst sogar wieder wie bisher ein neues Rectangle setzen, auf das Objekt an sich kommt es nicht an,
achte nur darauf dass x,y vom alten übernommen wird,
wobei dieses null sein kann, da wäre ein if nötig, die Startposition musst du dir dann selber überlegen,

noch schöner in der Richtung vielleicht, gar kein Rectangle, sondern nur einen Point oder int x/y zu verwenden,
und in paintComponent als Breite/ Höhe immer direkt auf CreateFile.cf zugreifen
 
S

SlaterB

Gast
es ist die Frage des Zeitpunkts, schau dir den StackTrace an, wie ich jetzt auch schaue,
das EditPanel wird in Zeile 24 von CreateFile erstellt, alles was dahinter steht ist noch nicht initialisiert,
während paintComponent erstmalig erst viel später drankommt,

aber egal, musst du ja auch nicht zwingend verstehen, die untigen Tipps stehen für sich
 

plammy

Bekanntes Mitglied
eine ganz simple Lösung noch, nahe deiner ursprünglichen:
verwende erst 70,70 und setze in paintComponent nur breite/hoehe neu, ohne x,y zu ändern,
Geht nicht :(

Java:
public class EditPanel extends JPanel 
{
    
    Image img;
    private int xPos, yPos;
    boolean pressOut = false;
 
    Color grayRect = new Color(230,227,224);
    Color orangeRect = new Color(211,111,53);
    
    Rectangle bausteinRect = new Rectangle(70,70,CreateFile.cf.bausteinW,CreateFile.cf.bausteinH);
    

    
    public  EditPanel()
    {
       
        
        /* ********************* Mouse Listener ***************************  */
        addMouseListener(new MouseAdapter() 
        {
           
            public void mousePressed(MouseEvent e) 
            {  
                xPos = bausteinRect.x - e.getX();
                yPos = bausteinRect.y - e.getY();
                
                if (bausteinRect.contains(e.getX(), e.getY()))
                {
                    updateLocation(e);
                    System.out.println("im Baustein");
                }
                else 
                {
                    pressOut = true;
                    System.out.println("auserhalb");
                }  
            }
            
            public void mouseReleased(MouseEvent e) 
            {
                  if (bausteinRect.contains(e.getX(), e.getY()))
                  {
                       updateLocation(e);
                       System.out.println("mouseReleased"); 
                  }
                  else
                  {
                      pressOut = false;
                  }
            }
            
        });

     
        /* ****************** Mouse Motion Listener ***********************  */
        addMouseMotionListener(new MouseMotionAdapter() 
        {
       
            public void mouseDragged(MouseEvent e) 
            {
              if (!pressOut)
              {
                updateLocation(e);
              
              }
              else
              {
                  
              }
           }
        });
        
   
    }

    public void updateLocation(MouseEvent e) 
    {
        bausteinRect.setLocation(xPos + e.getX(), yPos + e.getY());
        System.out.println("update");
        repaint();
  }

    protected void paintComponent(Graphics g) 
    {
        super.paintComponent(g);
   
            int centerX = getWidth()/2;     
            int beginPosition = (getHeight()-(CreateFile.cf.headerH + CreateFile.cf.contentH+ CreateFile.cf.footerH+CreateFile.cf.tile1H+CreateFile.cf.tile3H))/2;

            
            //header
            Rectangle headerRect = new Rectangle(centerX-CreateFile.cf.headerW/2,beginPosition,CreateFile.cf.headerW,CreateFile.cf.headerH);      
            g.setColor(grayRect);
            headerRect.translate(-CreateFile.cf.tile2W/2,CreateFile.cf.tile1H);
            g.fill3DRect(headerRect.x, headerRect.y, headerRect.width, headerRect.height,true);
            
//            MediaTracker mt = new MediaTracker(this);
//            img = Toolkit.getDefaultToolkit().getImage("C:\\Images\\szlogo.jpg");
//            mt.addImage(img,0);
//
//            g.drawImage(img,centerX-CreateFile.cf.headerW/2,beginPosition,this);
   
            //content
            Rectangle contentRect = new Rectangle(centerX-CreateFile.cf.contentW/2,beginPosition + CreateFile.cf.headerH,CreateFile.cf.contentW,CreateFile.cf.contentH);
            g.setColor(grayRect);
            contentRect.translate(-CreateFile.cf.tile2W/2,CreateFile.cf.tile1H);   
            g.fill3DRect(contentRect.x, contentRect.y, contentRect.width, contentRect.height,true);


            //footer
            Rectangle footerRect = new Rectangle(centerX-CreateFile.cf.footerW/2,beginPosition+CreateFile.cf.headerH+CreateFile.cf.contentH,CreateFile.cf.footerW,CreateFile.cf.footerH);
            g.setColor(grayRect);
            footerRect.translate(-CreateFile.cf.tile2W/2,CreateFile.cf.tile1H+CreateFile.cf.tile3H);   
            g.fill3DRect(footerRect.x, footerRect.y, footerRect.width, footerRect.height,true);


            //tile 1
            Rectangle tile1Rect = new Rectangle(centerX-CreateFile.cf.headerW/2-CreateFile.cf.tile2W/2,beginPosition,CreateFile.cf.tile1W,CreateFile.cf.tile1H);
            g.setColor(orangeRect);  
            g.fill3DRect(tile1Rect.x, tile1Rect.y, tile1Rect.width, tile1Rect.height,true);


            //tile 2    
            Rectangle tile2Rect = new Rectangle(centerX+CreateFile.cf.headerW/2-CreateFile.cf.tile2W/2,beginPosition+CreateFile.cf.tile1H,CreateFile.cf.tile2W,CreateFile.cf.tile2H);
            g.setColor(orangeRect);  
            g.fill3DRect(tile2Rect.x, tile2Rect.y, tile2Rect.width, tile2Rect.height,true);


            //tile3      
            contentRect.translate(0,CreateFile.cf.tile3H);
            Rectangle tile3Rect = new Rectangle(centerX-CreateFile.cf.headerW/2-CreateFile.cf.tile2W/2,beginPosition+CreateFile.cf.tile1H+CreateFile.cf.headerH+CreateFile.cf.contentH,CreateFile.cf.tile3W,CreateFile.cf.tile3H);
            g.setColor(orangeRect);  
            g.fill3DRect(tile3Rect.x, tile3Rect.y, tile3Rect.width, tile3Rect.height,true);


            //baustein
     
            
            g.setColor(orangeRect);  
            g.fill3DRect(0, 0, bausteinRect.width, bausteinRect.height,true);        
       
            
    }

  
}
 
S

SlaterB

Gast
dass du CreateFile.cf.bausteinW nicht ganz am Anfang bei der Objektinitialisierung aufrufen darst
ist immer noch nicht zu dir durchgedrungen?

70,70 bei x,y einzusetzen ändert daran nichts, ich sprach offensichtlich von den hinteren beiden Parametern,
dort 70, 70 (wie übrigens auch in meinem Code), CreateFile.cf.bausteinW muss weg.

das ist ja wirklich langsam ärgerlich wie konsequent mit Pech alles falsch läuft und kein Verständnis da ist..,
überlege doch in Ruhe was deine Befehle in Worten für eine Bedeutung haben sollen,
oder wenn du es nicht verstehst, dann stelle ganz konkrete Frage a la
"welchen Zweck hat 70,70 am Anfang, wofür soll ich das machen?"
nur blind beliebiges nach Vermutung irgendwo einzusetzen, das kann dann ja doch schiefgehen wie wir nun sehen und ich kaum gedacht hatte

in paintComponent dann CreateFile.cf.bausteinW usw. zu setzen, wie du es ganz am Anfang hattest und ich dir wieder vorschlug,
das fehlt aktuell übrigens auch..,
die ganze Zeit ist nur x/y das elementare Problem, dort musst du andere Werte setzen bzw. es unterlassen falsche Werte zu setzen,
CreateFile.cf.bausteinW kannst du wie früher lassen
 
Zuletzt bearbeitet von einem Moderator:

plammy

Bekanntes Mitglied
hab schon auch versuchs.. funktioniert dennoch nicht... :(

Java:
public class EditPanel extends JPanel 
{
    
    Image img;
    private int xPos, yPos;
    boolean pressOut = false;
 
    Color grayRect = new Color(230,227,224);
    Color orangeRect = new Color(211,111,53);
    
    Rectangle bausteinRect = new Rectangle(0, 0, 70, 70);

    public  EditPanel()
    {
        /* ********************* Mouse Listener ***************************  */
        addMouseListener(new MouseAdapter() 
        {
           
            public void mousePressed(MouseEvent e) 
            {  
                xPos = bausteinRect.x - e.getX();
                yPos = bausteinRect.y - e.getY();
                
                if (bausteinRect.contains(e.getX(), e.getY()))
                {
                    updateLocation(e);
                    System.out.println("im Baustein");
                }
                else 
                {
                    pressOut = true;
                    System.out.println("auserhalb");
                }  
            }
            
            public void mouseReleased(MouseEvent e) 
            {
                  if (bausteinRect.contains(e.getX(), e.getY()))
                  {
                       updateLocation(e);
                       System.out.println("mouseReleased"); 
                  }
                  else
                  {
                      pressOut = false;
                  }
            }
            
        });

     
        /* ****************** Mouse Motion Listener ***********************  */
        addMouseMotionListener(new MouseMotionAdapter() 
        {
       
            public void mouseDragged(MouseEvent e) 
            {
              if (!pressOut)
              {
                updateLocation(e);
              
              }
              else
              {
                  
              }
           }
        });
        
   
    }

    public void updateLocation(MouseEvent e) 
    {
        bausteinRect.setLocation(xPos + e.getX(), yPos + e.getY());
        System.out.println("update");
        repaint();
  }

    protected void paintComponent(Graphics g) 
    {
        super.paintComponent(g);
   
            int centerX = getWidth()/2;     
            int beginPosition = (getHeight()-(CreateFile.cf.headerH + CreateFile.cf.contentH+ CreateFile.cf.footerH+CreateFile.cf.tile1H+CreateFile.cf.tile3H))/2;

            
            //header
            Rectangle headerRect = new Rectangle(centerX-CreateFile.cf.headerW/2,beginPosition,CreateFile.cf.headerW,CreateFile.cf.headerH);      
            g.setColor(grayRect);
            headerRect.translate(-CreateFile.cf.tile2W/2,CreateFile.cf.tile1H);
            g.fill3DRect(headerRect.x, headerRect.y, headerRect.width, headerRect.height,true);
            
//            MediaTracker mt = new MediaTracker(this);
//            img = Toolkit.getDefaultToolkit().getImage("C:\\Images\\szlogo.jpg");
//            mt.addImage(img,0);
//
//            g.drawImage(img,centerX-CreateFile.cf.headerW/2,beginPosition,this);
   
            //content
            Rectangle contentRect = new Rectangle(centerX-CreateFile.cf.contentW/2,beginPosition + CreateFile.cf.headerH,CreateFile.cf.contentW,CreateFile.cf.contentH);
            g.setColor(grayRect);
            contentRect.translate(-CreateFile.cf.tile2W/2,CreateFile.cf.tile1H);   
            g.fill3DRect(contentRect.x, contentRect.y, contentRect.width, contentRect.height,true);


            //footer
            Rectangle footerRect = new Rectangle(centerX-CreateFile.cf.footerW/2,beginPosition+CreateFile.cf.headerH+CreateFile.cf.contentH,CreateFile.cf.footerW,CreateFile.cf.footerH);
            g.setColor(grayRect);
            footerRect.translate(-CreateFile.cf.tile2W/2,CreateFile.cf.tile1H+CreateFile.cf.tile3H);   
            g.fill3DRect(footerRect.x, footerRect.y, footerRect.width, footerRect.height,true);


            //tile 1
            Rectangle tile1Rect = new Rectangle(centerX-CreateFile.cf.headerW/2-CreateFile.cf.tile2W/2,beginPosition,CreateFile.cf.tile1W,CreateFile.cf.tile1H);
            g.setColor(orangeRect);  
            g.fill3DRect(tile1Rect.x, tile1Rect.y, tile1Rect.width, tile1Rect.height,true);


            //tile 2    
            Rectangle tile2Rect = new Rectangle(centerX+CreateFile.cf.headerW/2-CreateFile.cf.tile2W/2,beginPosition+CreateFile.cf.tile1H,CreateFile.cf.tile2W,CreateFile.cf.tile2H);
            g.setColor(orangeRect);  
            g.fill3DRect(tile2Rect.x, tile2Rect.y, tile2Rect.width, tile2Rect.height,true);


            //tile3      
            contentRect.translate(0,CreateFile.cf.tile3H);
            Rectangle tile3Rect = new Rectangle(centerX-CreateFile.cf.headerW/2-CreateFile.cf.tile2W/2,beginPosition+CreateFile.cf.tile1H+CreateFile.cf.headerH+CreateFile.cf.contentH,CreateFile.cf.tile3W,CreateFile.cf.tile3H);
            g.setColor(orangeRect);  
            g.fill3DRect(tile3Rect.x, tile3Rect.y, tile3Rect.width, tile3Rect.height,true);


            //baustein
     
            bausteinRect = new Rectangle(0,0,CreateFile.cf.bausteinW,CreateFile.cf.bausteinH);
            g.setColor(orangeRect);  
            g.fill3DRect(bausteinRect.x, bausteinRect.y, bausteinRect.width, bausteinRect.height,true);        
       
            
    }

    
}
 
S

SlaterB

Gast
so, dass ist jetzt wieder die Ursprungsversion, nur mit vorinitialisierten bausteinRect, was nicht ganz so wichtig ist,
und vor allem hast du in paintComponent überschreibst du in paintComponent nun x/y mit 0,0 statt im ersten Post getX(),getY(),
wahrscheinlich ist dass dasselbe, war damals auch 0,0,

also zusammen ziemlich genau die Version des ersten Posts, nicht ganz so schlimm wie es klingen mag,

was hatte ich in meinem Posting geschrieben?
eine ganz simple Lösung noch, nahe deiner ursprünglichen:
verwende erst 70,70 und setze in paintComponent nur breite/hoehe neu, ohne x,y zu ändern,

du kannst sogar wieder wie bisher ein neues Rectangle setzen, auf das Objekt an sich kommt es nicht an,
achte nur darauf dass x,y vom alten übernommen wird,
wobei dieses null sein kann, da wäre ein if nötig, die Startposition musst du dir dann selber überlegen,

klassisch missachtet, ich schreibe so deutlich dass du x,y nicht kaputtmachen sollst,
denn bei einer Verschieben hier ist x,y ja offensichtlich elementar wichtig,
und du setzt x,y bei jedem paint wieder auf 0..,
in meinem aller ersten Posting hatte ich genau das ja auch als Fehler genannt,

du schaffst es immer weiter mich zu überraschen wie falsch man alles machen kann..

du kannst wie gesagt gerne (entgegen meinen ersten Vorschlag) doch das Rectange überschreiben,
damit die Breite/ Höhe aktuell übernommen wird,
aber du musst die vorherigen x,y aus dem alten Rectange retten,

verstehst du was diese Worte bedeuten? siehst du einen Unterschied zu x,y auf 0,0 zu setzen?
du musst ja nicht gleich in 3 sec die korrekten Befehle kennen, aber wäre schon schön wenn du wenigstens das Problem erkennst..
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Was genau bewirkt Rectangle in 2dGraphics? AWT, Swing, JavaFX & SWT 1
R AWT Rectangle mit Angle AWT, Swing, JavaFX & SWT 10
K 2048 Umsetzung mit Gridpane / Stackpane und / Rectangle AWT, Swing, JavaFX & SWT 0
N JavaFX Group: Gezieltes entfernen eines Objects (Rectangle) AWT, Swing, JavaFX & SWT 0
J JavaFX Rectangle innerhalb eines Rectangle oder Panes positionieren? AWT, Swing, JavaFX & SWT 1
U JavaFX GridPane - Circle auf Rectangle versetzten AWT, Swing, JavaFX & SWT 1
G Rectangle Breite richtet such an die Breite vom Text AWT, Swing, JavaFX & SWT 1
L JavaFX Rectangle mit Dock-Mechanismus AWT, Swing, JavaFX & SWT 3
K JavaFX TableView mit Rectangle AWT, Swing, JavaFX & SWT 3
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
T Rectangle Transparent und darunter liegende Objekte Bedienbar AWT, Swing, JavaFX & SWT 0
J Rectangle g.fillRec() X/Y Punkt AWT, Swing, JavaFX & SWT 5
TheSorm Rectangle drehen AWT, Swing, JavaFX & SWT 9
S Rectangle Border Color AWT, Swing, JavaFX & SWT 13
P drawString in einem Rectangle AWT, Swing, JavaFX & SWT 4
P ImageIcon auf Rectangle AWT, Swing, JavaFX & SWT 3
P Rectangle on JPanel zentrieren AWT, Swing, JavaFX & SWT 20
O 2D-Grafik Rectangle mit double Werten zeichnen AWT, Swing, JavaFX & SWT 3
T Rectangle Namen geben? Alternativen auch gerne gesehen. AWT, Swing, JavaFX & SWT 2
D 2D-Grafik Form der GrafikObjekte ändern, Ellipse -> Rectangle AWT, Swing, JavaFX & SWT 2
K AWT Rectangle klappt nicht AWT, Swing, JavaFX & SWT 7
R Resize Rectangle Problem AWT, Swing, JavaFX & SWT 3
Schandro Den größten passenden java.awt.Font zu einem Rectangle berechnen AWT, Swing, JavaFX & SWT 2
I Text innerhalb von Rectangle rendern AWT, Swing, JavaFX & SWT 3
H Rectangle[] ? AWT, Swing, JavaFX & SWT 5
I Rectangle mit floating values AWT, Swing, JavaFX & SWT 2
D Markieren mit Rectangle ? AWT, Swing, JavaFX & SWT 9
T PLAF MetalButtonUI Rectangle beseitigen AWT, Swing, JavaFX & SWT 4
Redeason Objekte in meiner GUI verschieben AWT, Swing, JavaFX & SWT 1
H JavaFX Timeline II: Verschieben einer ImageView AWT, Swing, JavaFX & SWT 16
frager2345 JTextLabel im Flowlayout verschieben AWT, Swing, JavaFX & SWT 4
U JavaFX CheckBoxen in GUI verschieben AWT, Swing, JavaFX & SWT 20
M Polygon per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 26
F Popup Menu etwas verschieben AWT, Swing, JavaFX & SWT 2
K JavaFX Element in HBOX nach rechts verschieben AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
T AWT Grafik"Array" einzelne Elemente verschieben AWT, Swing, JavaFX & SWT 1
N JLabel in JTabbedPane verschieben AWT, Swing, JavaFX & SWT 2
B JavaFX Viewport verschieben AWT, Swing, JavaFX & SWT 3
C LayoutManager Bei verkleinern des Fensters, verschieben sich JPanels übereinander. AWT, Swing, JavaFX & SWT 7
C Swing Geschachteltes GUI mit BorderLayout - Vertikal & horizontal Verschieben AWT, Swing, JavaFX & SWT 1
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
Y Titel Verschieben AWT, Swing, JavaFX & SWT 11
Z Bildervorschau, MouseDragged das Bild verschieben AWT, Swing, JavaFX & SWT 1
M label mit icon verschieben. AWT, Swing, JavaFX & SWT 1
R Swing Elemente verschieben sich im GBL beim Ein/Ausblenden AWT, Swing, JavaFX & SWT 0
W Buttons verschieben AWT, Swing, JavaFX & SWT 3
Z Plot nach links verschieben!! AWT, Swing, JavaFX & SWT 1
M 3D-Grafik Denkfehler bei Verschieben von Shapes AWT, Swing, JavaFX & SWT 0
T JLabel Nullpunkt verschieben AWT, Swing, JavaFX & SWT 6
K JavaFX Spalten der Tabellen verschieben AWT, Swing, JavaFX & SWT 2
P JList/JScroolPane Text verschieben und text wrappen AWT, Swing, JavaFX & SWT 3
L JFrame von der Taskleiste zu den ausgeblendeten Symbolen verschieben AWT, Swing, JavaFX & SWT 2
O Swing Spalten-Position nach verschieben AWT, Swing, JavaFX & SWT 6
T Swing JButton per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 5
L Componenten im JFrame an genaue stelle verschieben. AWT, Swing, JavaFX & SWT 2
D JSplitPane lässt sich nicht verschieben AWT, Swing, JavaFX & SWT 3
A JLabel verschieben AWT, Swing, JavaFX & SWT 9
bluerob JComponenten verschieben sich bei Fenster wechseln AWT, Swing, JavaFX & SWT 3
J jFrame verschieben verhindern AWT, Swing, JavaFX & SWT 4
H Bild mit KeyListener verschieben AWT, Swing, JavaFX & SWT 2
R JTextField Eingabefeld innerhalb verschieben AWT, Swing, JavaFX & SWT 2
C Bild auf Panel vergrößern und verschieben AWT, Swing, JavaFX & SWT 4
P Objekte anzeigen und verschieben - wie? AWT, Swing, JavaFX & SWT 6
H LayoutManager Panel verschieben sich AWT, Swing, JavaFX & SWT 5
B Element schrittweise verschieben AWT, Swing, JavaFX & SWT 2
G Swing JPanel per Maus verschieben AWT, Swing, JavaFX & SWT 5
K Button verschieben AWT, Swing, JavaFX & SWT 4
T 2D-Grafik gezeichnetes Bild verschieben - rand bleibt sichtbar AWT, Swing, JavaFX & SWT 2
propra Mehrere Objekte gleichzeitig verschieben AWT, Swing, JavaFX & SWT 7
V Swing JScrollPane Viewport verschieben AWT, Swing, JavaFX & SWT 2
propra Objekte auf Zeichenfläche verschieben AWT, Swing, JavaFX & SWT 2
P Swing JTable null values an das Ende verschieben AWT, Swing, JavaFX & SWT 2
M verschieben der Objekte in JPanel nur stückchenweise möglich AWT, Swing, JavaFX & SWT 14
B FlowLayout Buttons verschieben? AWT, Swing, JavaFX & SWT 13
K JButtons innerhalb eines JPanels verschieben (DRAG&DROP) AWT, Swing, JavaFX & SWT 5
R Swing Verschieben eines jButtons mittels MouseDragged AWT, Swing, JavaFX & SWT 4
Z 2D-Grafik Bild auf JPanel verschieben AWT, Swing, JavaFX & SWT 4
D Grafik über JPanels hinweg verschieben AWT, Swing, JavaFX & SWT 2
D Swing Swing Komponenten verschieben AWT, Swing, JavaFX & SWT 7
B Swing AbstractTableModel rows verschieben AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Shapes auf Zeichenfläche gleichmäßig verschieben AWT, Swing, JavaFX & SWT 5
Burny91 Swing Vertical JSplitPane lässt sich nicht nach rechts verschieben AWT, Swing, JavaFX & SWT 2
E Swing Rechteck und Kreise verschieben AWT, Swing, JavaFX & SWT 3
N verschieben von Dateien auf der Festplatte über TreePaths funktioniert nicht AWT, Swing, JavaFX & SWT 10
F Swing Objekte mit Maus verschieben AWT, Swing, JavaFX & SWT 8
E Swing Drag n Drop Verschieben von Labels o.ä. AWT, Swing, JavaFX & SWT 10
K Swing Elemente auf Zeichenfeld verschieben AWT, Swing, JavaFX & SWT 8
C Drag and Drop JPanel auf JPanel nach drop erneut verschieben? AWT, Swing, JavaFX & SWT 3
B JLabel mittels Timer und setLocation verschieben AWT, Swing, JavaFX & SWT 3
M Buttons per Drag & Drop im GridBagLayout verschieben AWT, Swing, JavaFX & SWT 6
C paintComponent mit Maus verschieben - wie? AWT, Swing, JavaFX & SWT 2
T Swing JComboBox: Listeneinträge mit der Maus verschieben AWT, Swing, JavaFX & SWT 5
J showMessageDialog nicht über frame verschieben AWT, Swing, JavaFX & SWT 6
R Bereiche auf Panel verschieben AWT, Swing, JavaFX & SWT 2
U SWT Linien verschwinden nach Verschieben AWT, Swing, JavaFX & SWT 3
D Swing Spaltenköpfe verschieben sich nicht mit, wenn man an horizontaler Scrollbar zieht AWT, Swing, JavaFX & SWT 9
R Swing Frame verschieben AWT, Swing, JavaFX & SWT 3
C JTable mit RowSorter und Drag & Drop: Zeile verschieben AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben