Saban Geschrieben 2. Mai 2009 Geschrieben 2. Mai 2009 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 Zitieren
zui2000 Geschrieben 2. Mai 2009 Geschrieben 2. Mai 2009 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. Zitieren
Saban Geschrieben 3. Mai 2009 Autor Geschrieben 3. Mai 2009 Danke das Problem hat sich gelöst! MfG Saban Zitieren
Empfohlene Beiträge
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.