Auf Buttons reagieren

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo habe ein Problem mit dem Event der Buttons und zwar sollen die Buttons auf eine Methode reagieren die von einer anderen Klasse geerbt werden hier mal der Code der Ausführenden Klassen :

Code:
import java.awt.*;

import java.awt.event.*;
import java.util.ArrayList;

import javax.swing.*;




public class Kontrolle_Gui extends Verwaltung{

	private static JTextArea aus;
	private static Verwaltung verwaltung;  // Verweis auf Fachkonzept
	
	/** Konstruktor */
	public Kontrolle_Gui(Verwaltung verw)
	{
    verwaltung=verw;
	}
		
	public static void main(String args[])
	{
		Verwaltung verw = new Verwaltung();
		// Erzeugung der Objekte
		
		Point point=new Point("Punkt",10,20,30,40);
		Linie linie=new Linie("Linie",20,5,10);
		final Sphere sphere=new Sphere("Kugel",30,3,1,"gelb");
		Triangle triangle=new Triangle("Dreieck",40,50,-25,-40,"pink");
		
		
		
         // Consctrucion of an ArrayList
		final ArrayList c = new ArrayList();
		
		c.add(point);		
		c.add(linie);
		c.add(sphere);
		c.add(triangle);
		
	JFrame win = new JFrame("Kontrolle mit Gui");
	
	win.setSize(600, 300);
	
	win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	win.setVisible(true);
	win.pack();
	JPanel panel = new JPanel();
	panel.add(new JLabel("Ausgabe: "));
	aus = new JTextArea(20, 50);
	aus.setEditable(false);
	panel.add(new JScrollPane(aus));
	win.add(panel, BorderLayout.CENTER);

     //	 Panel enthält drei Knöpfe
	JPanel panel2 = new JPanel();
	 final JButton button1 = new JButton("Suchen");
	// Erzeuge/registriere Objekt, das ActionListener implementiert
	button1.addActionListener(new ActionListener() {
			// Implementierung der Schnittstelle
			public void actionPerformed(ActionEvent e) {
				aus.append("\nObjekte anhand ID gefunden\n");
				// Aufruf der Methode des Fachkonzepts
				String cmd=e.getActionCommand();
				if(cmd.equals("Suchen")){
				????????????????????????????????????????????????????????????????
				
				
			}
			}});
	panel2.add(button1);
	
	JButton button2 = new JButton("Lösche");
	button2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				aus.append("\nObjekte gelöschen anhand ID\n");
				
				
                       
				// Aufruf der Methode des Fachkonzepts
				
				
			}
		});
	panel2.add(button2);
	
	JButton button3 = new JButton("Filtern");
	button3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				aus.append("\nObjekte gefiltern anhand ID\n");				
				// Aufruf der Methode des Fachkonzepts
				
				
			}
		});
	panel2.add(button3);
	
	// Ende der Knöpfe
	
	win.add(panel2, BorderLayout.SOUTH);
	
	
	}
	}
 
In dieser Klasse werden Objekte erzeugt und in einer ArrayList gespeichert. Wenn ich nun den Knopf Button1 drücke soll er die Funktion der nachfolgenden Funktion "suchen" aufrufen und im Ausgabefeld der Gui ausgeben allerdings will mir das nicht gelingen hier die Klasse von der die Funktionen geerbt werden :

Code:
import java.util.*;


public class Verwaltung {
       
       
                protected  int ID;
                protected  String name;
                
                
               
                
                // Suchfunktion für Array Liste anhand ID
                public static void suchen(List list,Sphere sphere){
                                               
                        Iterator it1=list.iterator();
                        while(it1.hasNext()){
                        it1.next();
                       
                        if(sphere.getID()==30){
                                list.remove(sphere);
                               
                                
                                System.out.println("Das Objekt " +sphere+" wurde gefunden");
                                       
                        }
                        else{
                               
                                System.out.println("Das Objekt mit der ID wurde nicht gefunden");
                                // break für direkten Schleifenabbruch 1 malige Ausgabe 
                                break;
                        }
                }
                }
                // Löschfunktion für Array Liste
                public static void löschen(List list,Point point){
                       
                        Iterator it=list.iterator();
                        while (it.hasNext()){       
                        Object o=it.next();
                   
                        if(point.getID()==10){
                        list.remove(o);
                                                               
                   
                        System.out.println("Objekt mit der ID "+point.getID()+" wurde gelöscht,"
                                          +" Restlist ist:"+list);
                       }
                       else{
                               list.remove(o);
                               System.out.println("Das Objekt mit der ID wurde nicht gefunden");
                               // Schleifenabbruch 
                               break;
                      }
                   }
						
                }
                // Filterfunktion auf Liste angewendet
                public static void filtern(List list,Linie linie){
                	Iterator it2=list.iterator();
			        while(it2.hasNext()){
			        	Object o=it2.next();
			        	if(list.contains(linie)){
			        		list.remove(o);
			        		System.out.println("Die Liste enthält ein "+list.get(0));
			        	}
			        		else{
			        			System.out.println("Das Objekt ist nicht vorhanden");
			        			break;
			        	}
			        }
                }
                
}

Ich wäre so froh wenn mir da jm helfen könnte Verzweifel langsam 🙁
 
Warum sind die Funktionen static?

Auf static Fuktionen greift man Verwaltung.Funktionsname zu.

ohne static kannst die Funktion normal benutzen.

Da wo deine Fragezeichen sind einfach
filtern(...) etc.

wenn du Ableiten tust sollten die Funktionen public oder protected sein. Private Funktionen bleiben in der Classe.
 
da mein Problem das Ergebnis der Funktion auf mein Ausgabefeld der Gui erscheinen soll also das Ergebnis der Suchfunktion wenn ich aber diesen Code angebe :

Code:
aus.getText(verwaltung.suchen(c,sphere));

Bekomm ich den Fehler angezeigt das es nicht funktoniert !!
Ich weiß nicht wie ich da vorgehn soll.
 
Lass mal das static weg.
Static Methoden kann man nicht Vererben. Warum auch den Static bedeutet das, man von überall auf diese Methode zugreifen kannst.

Du hollst die Methode direkt aus der Klasse nicht über das Object.

verwaltung <- object nehme ich mal an
Verwaltung <- Klasse

Beachte das große V
 
wenn ich das static weg mache sagt der compiler mir das die methode getText nicht mit den Argumenten von void übereinstimmt 🙁
 
suchen liefert keinen Rückgabewert, wie willst du nichts an getText() als Parameter übergeben?
 
Ich denke mal du möchtest ins Label was reinschreiben.

dazu nimmt man setText().

setText erwatet nen Stiring als Parameter deine Suchen Funktion sollte evtl. anstatt Void String zurückliefern
 
also das ist was ich vorghabe : Button Suchen drücken , dieser Button ruft die Funktion "Suchen" auf die Funktion durchsucht meine ArrayList anhand einer Eigenschaft in meinem Fall anhand einer ID das Objekt und gibt es in meinem JTextArea auf meiner gui aus. Ich denke schon das meine Funktion nicht als void sondern String deklariert werden müsst mein Problem ist es jetzt was erwartet meine Funktion als "return" zurück??
 
Wie wäre es wenn du
System.out.println("Das Objekt " +sphere+" wurde gefunden");

durch return "Das Objekt " +sphere+" wurde gefunden"; ersezt
 
man bin ich dumm 😀 dankeeeeeeeeeeeeeeeee oh wie peinlich danke nochmal
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben