Bestimmtes Objekt einer ArrayList in einer Methode selektieren

Castelexhd

Mitglied
Hallo,
ich hoffe, dass mir jemand bei diesem Problem weiterhelfen könnte und zwar möchte ich einen Art "Raumplaner" programmieren. Ich habe bereits ein GUI erstellt und man kann mehrere Objekte mittels eines Arrays erstellen. Nun möchte ich aber dass sich stuhl 2 um z.B. 20 Felder nach rechts bewegt. Die Methode hab ich auch schon, nun ist die Frage aber, wie ich das spezifische Objekt damit verbinden kann?

LG

P.s. Hat jemand nen Vorschlag wie man markieren kann, welches Objekt ausgewählt wurde?
 
Ich sende euch einfach mal meinen Quelltext. 🙂

Also Stuhl 2 ist z.B. das zweite Stuhlobjekt, man kann ja mehrere Stühle generieren.

Bei der Methode "bewegeHorizontal" habe ich das schon einmal versucht:
Java:
public void bewegeHorizontal(int entfernung, int objektNr)
      {
     
        StuhlAuswahl[] stuhl[];
        stuhl[objektNr] = objektNr;
      
        loesche();
        xPosition += entfernung;
        zeichne();
      }
Java:
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import java.util.ArrayList;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;


public class StuhlAuswahl extends JFrame implements ActionListener {

  
      private int xPosition;
      private int yPosition;
      private int orientierung;
      private String farbe;
      private boolean istSichtbar;
      private int breite;
      private int tiefe;




/**
     *
     */
    private static final long serialVersionUID = 1L;
        String[] SesselAussuchen = {"Rot","Blau","Schwarz"};
        JComboBox<?> comboSesselAussuchen = new JComboBox<Object>(SesselAussuchen);
        JLabel lblText = new JLabel();
      
      
      
      
  
  
    public static void auswahlbox(){
        StuhlAuswahl fr = new StuhlAuswahl(null);
        centerFrame(fr);
        fr.setVisible(true);
      
      
    }

  

    private static void centerFrame(StuhlAuswahl fr) {
        // TODO Auto-generated method stub
      
    }



    public StuhlAuswahl(String farbe){
        setLayout(new FlowLayout());
        setSize(400,300);
        setTitle("Wähle die Farbe deines Stuhls");
        add(comboSesselAussuchen);
      
      
      
        DerHandler handler = new DerHandler();
        comboSesselAussuchen.addActionListener(handler);
      
        xPosition = 160;
        yPosition = 80;
        orientierung = 0;
        istSichtbar = false;
        breite = 40;
        tiefe  = 40;
        this.farbe = farbe;
      
              
      
    }
  
    public class DerHandler implements ActionListener{
  
    public void actionPerformed(ActionEvent e){
        if(e.getSource()==comboSesselAussuchen){
            JComboBox cb = (JComboBox)e.getSource();
            String msg = (String)cb.getSelectedItem();
          
          
            switch(msg){
            case "Rot" : {
            
              int answer = JOptionPane.showConfirmDialog(null, "Möchtest du wirklich den Sessel hinzufügen?",
                    "Confirm Dialog", JOptionPane.YES_NO_OPTION);
              switch (answer) {
                 case JOptionPane.YES_OPTION:
                  
                         
                     StuhlAuswahl[] stuhl = new StuhlAuswahl[1];
                     int i;
                     for(i=0;i<stuhl.length;i++){
                         stuhl[i]=new StuhlAuswahl("rot");
                         stuhl[i].zeige();
                       
                       
                     }
                                                          
                   
                       
                        break;
                 case JOptionPane.NO_OPTION:
                    System.out.println("You clicked NO"); break;
               
              } // end of Case"Rot"
            break;
            }
            case "Blau" : {
                
                  int answer = JOptionPane.showConfirmDialog(null, "Möchtest du wirklich den Sessel hinzufügen?",
                        "Confirm Dialog", JOptionPane.YES_NO_OPTION);
                  switch (answer) {
                     case JOptionPane.YES_OPTION:
                       
                        StuhlAuswahl stuhl = new StuhlAuswahl("blau");
                        stuhl.zeige();                                      
                       
                           
                            break;
                     case JOptionPane.NO_OPTION:
                        System.out.println("You clicked NO"); break;
                   
                  } // end of Case"Blau"
                break;
                }
          
            case "Schwarz" : {
                
                  int answer = JOptionPane.showConfirmDialog(null, "Möchtest du wirklich den Sessel hinzufügen?",
                        "Confirm Dialog", JOptionPane.YES_NO_OPTION);
                  switch (answer) {
                     case JOptionPane.YES_OPTION:
                       
                        StuhlAuswahl stuhl = new StuhlAuswahl("schwarz");
                        stuhl.zeige();                                      
                       
                           
                            break;
                     case JOptionPane.NO_OPTION:
                        System.out.println("You clicked NO"); break;
                   
                  } // end of Case"Schwarz"
                break;
                }
          
}  
          
}
      
      
}  
  
}
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
      
    }  
  
  
  
  



    public Shape gibAktuelleFigur()
      {
          GeneralPath stuhl = new GeneralPath();
          stuhl.moveTo(xPosition       , yPosition);
          stuhl.lineTo(xPosition+breite, yPosition);
          stuhl.lineTo(xPosition+breite+3, yPosition+tiefe);
          stuhl.lineTo(xPosition-3       , yPosition+tiefe);
          stuhl.lineTo(xPosition       , yPosition        );
          //Das ist die Umrandung. Das Stuhl bekommt noch eine Lehne
          stuhl.moveTo(xPosition       , yPosition + 5 );
          stuhl.lineTo(xPosition + breite      , yPosition + 5);

          AffineTransform t1 = new AffineTransform();
          t1.rotate(Math.toRadians(orientierung),gibMitteX(),gibMitteY());

          return  t1.createTransformedShape(stuhl);
      }
    
      /**
       * Hole die X-Koordinate des Mittelpunktes
       * [ Hilfsfunktion f�r das Drehen. ]
       */
      private int gibMitteX()
      {
        return xPosition+breite/2;
      }

      /**
       * Hole die Y-Koordinate des Mittelpunktes
       * [ Hilfsfunktion f�r das Drehen. ]
       */
      private int gibMitteY()
      {
        return yPosition+tiefe/2;
      }

      /**
       * Mache dieses Objekt sichtbar. Wenn es bereits sichtbar ist, tue
       * nichts.
       */
      public void zeige()
      {
        istSichtbar = true;
        zeichne();
      }

      /**
       * Mache dieses Objekt unsichtbar. Wenn es bereits unsichtbar ist, tue
       * nichts.
       */
      public void verberge()
      {
        loesche();
        istSichtbar = false;
      }

      /**
       * Drehe auf den angegebenen Winkel
       */
      public void dreheAuf(int neuerWinkel)
      {
         loesche();
         orientierung = neuerWinkel;
         zeichne();
      }

      /**
       * Bewege dieses Objekt horizontal um 'entfernung' Bildschirmpunkte.
       */
      public void bewegeHorizontal(int entfernung, int objektNr)
      {
      
        StuhlAuswahl[] stuhl[];
        stuhl[objektNr] = objektNr;
       
        loesche();
        xPosition += entfernung;
        zeichne();
      }

      /**
       * Bewege dieses objekt vertikal um 'entfernung' Bildschirmpunkte.
       */
      public void bewegeVertikal(int entfernung)
      {
        loesche();
        yPosition += entfernung;
        zeichne();
      }

   
      /**
       * �ndere die Farbe dieses Objektes in 'neueFarbe'.
       * G�ltige Angaben sind "rot", "gelb", "blau", "gruen",
       * "lila" und "schwarz".
       */
      public void aendereFarbe(String neueFarbe)
      {
        farbe = neueFarbe;
        zeichne();
      }

      /*
       * Zeichne dieses Objekt mit seinen aktuellen Werten auf den Bildschirm.
       */
      public void zeichne()
      {
        if (istSichtbar)
        {
          Shape figur = gibAktuelleFigur();
          Leinwand leinwand = Leinwand.gibLeinwand();
          leinwand.zeichne (
            this,
            farbe,
            figur);
          leinwand.warte(10);
        }
      }

      /*
       * L�sche dieses Objekt vom Bildschirm.
       */
      private void loesche()
      {
        if (istSichtbar)
        {
          Leinwand leinwand = Leinwand.gibLeinwand();
          leinwand.entferne(this);
        }
        }
  
  
  
}
 
Frage:

Wieviel von dem Code oben hast du selber geschrieben und wie viel ist davon aus dem Internet kopiert?

Ich denke du solltest erstmal die Grundlagen erlernen bevor du anfängst mit so einem großen Projekt.
 
Ich habe mir ich glaube 50 Tutorials von JavaTutorialsDE zu fast allem gemacht. Er hat nur leider bei GUI aufgehört. Abkopiert habe ich davon nichts. Ich bräuchte das halt nur fürn nen Projekt in der Schule. Lehrerin konnte mir da auch nicht weiterhelfen 🙁

EDIT:
Falls du die vielen Methoden meinst, die sind vergebenen gewessn. Das Projekt besteht eigentlich nur daraus, weitere Möbel hinzufügen und ein paar Methoden erstellen. Aber mein Ziel sind halt 15 Punkte und deswegen habe ich das Menü schon programmiert. Bis dato läuft auch alles.
 
Zuletzt bearbeitet:

Zurück
Oben