Zum Inhalt springen

Fehlerhafter Methoden Aufruf


Saban

Empfohlene Beiträge

Hallo Zusammen!

Ich habe ein mächtiges Problem das mir den ganzen Tag schon zu schaffen macht und zwar lese ich eine Datenbank aus und lasse mir von den Strings Checkboxen erzeugen die ich auf ein Panel lege. Das klappt bisher auch wunderbar. Ich benutze dafür das neue TransparentLayout...

Meine add-Methode:


	public Component add(JCheckBox c){		

		//Panel

		grundfläche.add(c, new Rectangle( 10, pos_y,500, 25 ));

		//JList

		panelElemente.add(c);

		grundfläche.validate();


		pos_y = pos_y + 20;

		return c;

	}

Da ich die Anzeige auf dem Panel dynamisch gestalten will habe ich die Methode removeChb()...

public void removeChb(){

//		for(int index = 1; index < panelElemente.size(); index++){

//			grundfläche.remove(panelElemente.get(index));

//			panelElemente.remove(index);

//		}


		panelElemente.clear();

		grundfläche.removeAll();


		grundfläche.setPreferredSize(new Dimension(450, 450));

		grundfläche.setLayout(new TransparentLayout());

		getViewport().add(grundfläche);

		setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Test"));

		setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

		setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

	}

Nun klappt alles beim starten des Programms doch wenn ich nun ein Datum eingebe (das Datum grenzt die Abfrage in der Datenbank ein) und dann auf den Start Button klicke... Mein Code für den Konstruktor (Programm Start)

/** Starte Connection zur DB */

		connection.startConnection();


		Container GUI = getContentPane();

		GUI.setLayout(null);


		pa_Werknummer.setBounds			( 10,150, 200, 160);

		bt_anzeigen.setBounds			(725,577, 100,  20);


		pa_Zeitraum.setBounds			(220,480, 160, 120);

		bt_test.setBounds				(850,577, 100,  20);




		add(pa_Werknummer);	

		add(pa_Zeitraum);

		add(bt_anzeigen);

		add(bt_test);


		/** Befülle die Panels mit Daten aus der DB */

		befülleWerknummer();


		/** Allgemeine Eigenschaften des Frames */

		/* Größenveränderbarkeit des Fensters */

		setResizable(false);

		/* Angzeigter Titel des Fensters */

		setTitle("BauKom");

		/* Beende das Programm beim schliessen des Fensters */

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		/* Berechnung der Bildschirmgröße mit anschließender Größenangabe des Fensters 

		 * --> hoehe - 30 damit die Startleiste nicht überlappt wird */

		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

		int hoehe = (int) d.getHeight();

		int weite = (int) d.getWidth();

		setSize(weite, hoehe -30);

		/* Sichtbarkeit des Fensters */

		setVisible(true);

Mein Code für den Button

		bt_test.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent arg0) {

				von = getDateVon();

				bis = getDateBis();

				befülleWerknummer();

			}

		});

geht er zwar in die Methode befülleWerknummer() (die auch beim Start des Programms (KORREKT!) ausgeführt wird) Durchläuft die ganze Methode aber das Panel zeigt nichts an... :confused: Meine Methode zum befüllen

	public void befülleWerknummer(){

		/** Leert zuerst das vorhandene Panel */

		pa_Werknummer.removeChb();


		/** Erstellt eine Liste mit den vorhandenen Werknummern für den jeweiligen Zeitraum */

		List<JCheckBox> ls_Werknummer = new ArrayList<JCheckBox>();


		ls_Werknummer = connection.getWerknummerData(von, bis);


		/** Arbeitet die Liste ab und fügt Checkboxen dem Panel hinzu */

		for(int index = 0; index < ls_Werknummer.size(); index++){

			System.out.println("Bin in der Schleife");

			pa_Werknummer.add(ls_Werknummer.get(index));

		}


		/** Anschliessend die vorhandene Liste geleert */

		ls_Werknummer.clear();


		/** Und das wird Panel neu gezeichnet */

		pa_Werknummer.repaint();


		System.out.println("\n\nLeerzeile");

	}

Also nochmal mein Problem sobald sich die Checkboxen auf dem Panel ändern sollen bekomme ich nur noch ein leeres Panel zurück obwohl mir die Datenbankabfrage die richtigen Strings zurück gibt und meine Methode befülleWerknummer vollständig durch laufen wird...

Könnt ihr mir weiterhelfen :(

MfG

Saban

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

habe es nur mal kurz überflogen.

bist du dir sicher das die Mehtode "public Component add(JCheckBox c)" aufgerufen wird?

Und warum das?

Container GUI = getContentPane();

GUI.setLayout(null);

Wo setzt du denn dein Layout?

Und nur mal so nebenbei:

Eclipse hat einen super Debugger, also nutze ihn und gehe die ganze Prozedur Mehtode für Methode mal durch, vielleicht findest du selbst den Fehler.

Tip: keine Sonderzeichen benutzen! Der Standard ist UTF-8, auch wenn in Java es eigentlich möglich ist mit ä ü ö zu arbeiten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...