Daten in andere Klasse übergeben

  • Themenstarter Themenstarter sitcomfan1
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

sitcomfan1

Gast
Hallo,
ich hab folgendes Problem:
Ich habe meine Hauptklasse (Klasse 1) in der ich ein CardLayout definiert habe. Das Panel für eine Karte wird in einer anderen Klasse erzeugt (DatenEingabe). Auf dem Panel das in der Klasse DatenEingabe erzeugt wird, ist auch ein Button, mit dem ich wie üblich beim Klick darauf nach ActionPerformed gehe. Dort wird die Eingabe dann ausgewertet und ich benötige die Ergebnisse dann wieder in Klasse 1. Nur weiß ich nicht, wie ich die wieder dorthinbekomme.


Code:
public class Klasse1 extends JFrame
    implements ActionListener
{
	private DatenEingabe dateneingabe = new DatenEingabe();
	private CardLayout layout;
	
	public Klasse1()
	{

		//Layout wird erstellt (CardLayout)
		layout = new CardLayout();
		mainpanel.setLayout(layout);
		contentpane.add(mainpanel);

		//Karte Dateneingabe
		mainpanel.add(dateneingabe, "zwei");
		layout.first(mainpanel);
	}
	
	public void actionPerformed(ActionEvent event)
	{
		String s = event.getActionCommand();
		//String s1 = DatenEingabe.event.getActionCommand();
		if (s.equals("Neue Eingabe"))
		{
			layout.last(mainpanel);  //ruft Karte "zwei" auf
			
		}
	} 
}


Code:
public class DatenEingabe extends JPanel
	implements ActionListener
{	
	private int[] changes = new int[2];
	
	public DatenEingabe ()
	{		
		JButton button1 = new JButton("OK"); //Button
		
		this.setLayout(null);

                //definiere Eingabefelder

		button1.setBounds(20,80,51,25);
		this.add(button1);
		button1.addActionListener(this);
	}
	
	public void actionPerformed(ActionEvent event)
	{
		//String s = event.getActionCommand();
		changes[0] = ((Integer) anz1.getValue()).intValue();
		changes[1] = ((Integer) anz2.getValue()).intValue();
	}
}

Hier ist nun die Variable changes, die ich in der Klasse 1 wieder brauche.

Ich weiß, ich könnte es alles auch gleich in der Klasse 1 erstellen, aber ich habe noch mehrerer solcher Eingabeseiten zu erstellen. Deshalb würde die Hauptklasse am Ende nur zu voll sein.
 
bau doch ne set methode ein, so dass du in der klasse die set methode aufrufst, ihr changes aus der aktuellen übergibst und gut is.
 
hmmm...
ich weiß nicht, ob ich da grad auf der Leitung stehe, aber irgendwie krieg ich das nicht hin 🙁
könntest du das nochmal etwas genauer erklären? danke
 
Code:
public class DatenEingabe extends JPanel 
   implements ActionListener 
{    
   private int[] changes = new int[2]; 
    
   public DatenEingabe () 
   {       
      JButton button1 = new JButton("OK"); //Button 
       
      this.setLayout(null); 

                //definiere Eingabefelder 

      button1.setBounds(20,80,51,25); 
      this.add(button1); 
      button1.addActionListener(this); 
   } 
    
   public int[] getChanges() 
   { 
      return changes;
   } 
    
   public void actionPerformed(ActionEvent event) 
   { 
      //String s = event.getActionCommand(); 
      changes[0] = ((Integer) anz1.getValue()).intValue(); 
      changes[1] = ((Integer) anz2.getValue()).intValue(); 
   } 
}



In der Klasse1 kannst du nun mit dateneingabe.getChanges() auf deine Variablen zugreifen.


th[/code]
 
...und eine set()-Methode.
Code:
public class DatenEingabe extends JPanel 
   implements ActionListener 
{    
   private int[] changes; 
   private JButton okButton; //Button
    
   public DatenEingabe (int size) 
   {       
      changes = new int[size];
      okButton = new JButton("OK");
       
      this.setLayout(null); 

                //definiere Eingabefelder 

      okButton.setBounds(20,80,51,25); 
      this.add(okButton); 
      okButton.addActionListener(this); 
   } 
    
   public void actionPerformed(ActionEvent event) 
   { 
      //String s = event.getActionCommand(); 
      changes[0] = ((Integer) anz1.getValue()).intValue(); 
      changes[1] = ((Integer) anz2.getValue()).intValue(); 
   }

   public void setValue(int value, int index) {
       changes[index] = value;
   }
}
 
Code:
public class DatenEingabe extends JPanel 
   implements ActionListener 
{    
   private int[] changes = new int[2]; 
    
   public DatenEingabe () 
   {       
      JButton button1 = new JButton("OK"); //Button 
       
      this.setLayout(null); 

                //definiere Eingabefelder 

      button1.setBounds(20,80,51,25); 
      this.add(button1); 
      button1.addActionListener(this); 
   } 
    
   public int[] getChanges() 
   { 
      return changes;
   } 
    
   public void actionPerformed(ActionEvent event) 
   { 
      //String s = event.getActionCommand(); 
      changes[0] = ((Integer) anz1.getValue()).intValue(); 
      changes[1] = ((Integer) anz2.getValue()).intValue(); 
   } 
}



In der Klasse1 kannst du nun mit dateneingabe.getChanges() auf deine Variablen zugreifen.


th
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben