ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
516
516
EMPFEHLEN
-
Hallo,
ich bin dabei meine ersten Programme zu schreiben in Java und stehe nun vor einem Problem, was ich durch googlen und suchen bisher noch nicht lösen konnte. Daher versuche ich hier mal mein Glück und würd mich freuen wenn mir jemand antworten würde.
Folgendes Problem:
ich habe eine Liste "anzahl_list" und möchte die Einträge in dieser Liste in einer Jtable ausgegeben haben. Dies funktioniert auch soweit, aber nur mit der Angabe der verschiedenen Positionen in der Liste. Da die Liste aus einer Datenbank gefüllt wird, gibt es bei jedem Durchlauf unterschiedlich viele Einträge. Ich bräuchte jetzt irgendeine Funktion oder ähnliches, mit der ich bei:
String[][] rowData = {
{ anzahl_list.get(0), anzahl_list.get(1), anzahl_list.get(2), anzahl_list.get(3), anzahl_list.get(4) },
{ anzahl_list.get(5), anzahl_list.get(6), anzahl_list.get(7), anzahl_list.get(8), anzahl_list.get(9) }};
nicht immer 0,1,2 ... und so weiter, nicht immer händisch eintragen muss, sondern die Einträge dynamisch ermittelt werden. Ich habe an sowas wie "anzahl_list.get(all)" gedacht. Das gibt es aber leider nicht
. Eine Schleife um "...rowData..." kann ich leider auch nicht packen, da diese Variable dann nachher nicht mehr für die JTable genutzt werden kann.
Unten der Code
int anzahl = (nam_list.size());
int a = 0;
int count = 0;
List<String> anzahl_list = new ArrayList<String>();
while(a!=anzahl){
if (count==4){
String na = nam_list.get(a);
String br = na + "\n";
anzahl_list.add(br);
a++;
count = 0;
}
else {
String na = nam_list.get(a);
anzahl_list.add(na);
a++;
count++;
}
}
{
String[][] rowData = {
{ anzahl_list.get(0), anzahl_list.get(1), anzahl_list.get(2), anzahl_list.get(3), anzahl_list.get(4) },
{ anzahl_list.get(5), anzahl_list.get(6), anzahl_list.get(7), anzahl_list.get(8), anzahl_list.get(9) }};
String[] columnNames = {
"Name", "Beschreibung", "Schrank", "Tür", "Fach"
};
JFrame f = new JFrame();Geändert von DerBuhl (26.07.11 um 19:51 Uhr)
-
27.07.11 12:30 #2
Hallo und herzlich willkommen bei Tutorials.de,
Vorab ein paar kleine Anmerkungen, bitte setze Java-Code in die entsprechenden Code-Tags, Code zu quoten ist nicht schön, also einfach "Quote" durch "Java" ersetzen...
Dann meinerseits ein paar allgemeine Fragen...
Wähle hierfür eine for-Schleife, dies sieht dann so aus:Code java:1 2 3
int a=0; while(a!=anzahl) a++;
Du sagst die Daten kommen aus der Datenbank, wieso gehst du den Umweg über irgendwelche Listen?Code java:1
for(int a=0; a!=anzahl; a++) { }
Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
Danke erstmal für die Antwort und den Hinweis mit dem Code. Ich hoffe dieses mal ist es richtig

Also diese while Schliefe habe ich gemacht, damit ich die Einträge dynamisch in die Liste schreiben kann. Jetzt brächte ich nur noch eine Funktion die diese Listeneinträge dynamisch in eine Tabelle überträgt.
Hier ist einmal der gesamte Code des Fensters:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
package zumtesten; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.event.ActionListener; import javax.swing.JTable; import java.io.IOError; import java.io.IOException; import java.sql.*; import java.util.List; import java.util.ArrayList; public class FindArtikle extends JFrame { private JButton button; // Instanzvariable für einen Button private JPanel panel; // Instanzvariable für einen Panel private JButton button1; private JButton button2; private JLabel oben; private JLabel unten; private JLabel abstand; private JLabel abstand2; private JLabel abstand3; private JLabel name; private JLabel abstand4; private JLabel abstand5; private JButton schrankpl; private JButton suchen; private JLabel abstand6; private JLabel abstand7; private JLabel Na; private JLabel Beschre; private JLabel Schr; private JLabel Tu; private JLabel Fa; private JTable table; private JLabel label; public FindArtikle() // Konstruktor { super("Fenster"); // Aufruf des Konstruktors der Superklasse mit übergabe eines Strings setSize(300, 300); // Fenster auf Grösse 300x300 setLocation (300,300); // Position auf 300x 300 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Beim schliessen des Fensters --> Programm beenden setLayout(new BorderLayout(6,6)); // Ein Layout für JFrame festlegen panel= new JPanel(new GridLayout(8,9)); // Ein Panel erzeugen mit GridLayout // Einen Button erzeugen button1 = new JButton("Menü"); button2 = new JButton("Beenden"); schrankpl = new JButton ("Schrankplan"); final TextField nametf = new TextField("", 30); unten = new JLabel("Version 1.0"); oben = new JLabel ("Lagerungssoftware"); abstand = new JLabel ("<html><b><font size='5'>Artikel suchen</font></b></html>"); abstand2 = new JLabel (""); abstand3 = new JLabel (""); abstand4 = new JLabel (""); abstand5 = new JLabel (""); abstand6 = new JLabel (""); abstand7 = new JLabel (""); name = new JLabel("Artikelname:"); suchen = new JButton("Suchen"); panel.add(abstand); panel.add(abstand6); panel.add(abstand7); panel.add(abstand3); panel.add(name); panel.add(nametf); panel.add(abstand2); panel.add(suchen); panel.add(abstand4); panel.add(abstand5);// Button auf Panel packen panel.add(button1); panel.add(button2); panel.add(schrankpl); button2.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { System.exit( 0 ); } } ); button1.addActionListener( new ActionListener() { public void actionPerformed (ActionEvent e){ AppWindow AppWindow4 = new AppWindow(); } }); schrankpl.addActionListener( new ActionListener() { public void actionPerformed (ActionEvent e) { schrankplan schrank = new schrankplan(); } }); suchen.addActionListener( new ActionListener() { public void actionPerformed (ActionEvent e) { String Name = nametf.getText(); Statement stmt; // Ist ein Statement für die Benutzung mit SQL ResultSet rs; // RS ist daszu da, damit man Daten aus der Datenbank lesen kann try { Class.forName("com.mysql.jdbc.Driver"); // lädt den Treiber String url = "jdbc:mysql://localhost:3306/lagerung"; // Der Pfad der Datenbank Connection con = DriverManager.getConnection(url, "root", "Admin"); // Hier wir eine Verbindung deklariert stmt = con.createStatement(); // Ist ein Statement für die Benutzung mit SQL rs = stmt.executeQuery("Select * from Artikel where Name Like '%"+ Name +"%'"); // hier wird mit Hilfe eines Statements eine Anfrage (Query) an die Datenbank gestellt und in eine Objektvaiable gespeichert List<String> nam_list = new ArrayList<String>(); while(rs.next()){ //Diese Schleife wird verwendet um mit rs.getString das feld Name aus der Datenbank zu lesen String Nam = rs.getString("Name"); nam_list.add(Nam); String Beschrei = rs.getString("Beschreibung"); nam_list.add(Beschrei); double Schran = rs.getDouble("Schrank"); String Schra = String.valueOf(Schran); nam_list.add(Schra); String Tue = rs.getString("Tuer"); nam_list.add(Tue); String Fac = rs.getString("Fach"); nam_list.add(Fac); } int anzahl = (nam_list.size()); // Hier wird die Anzahl der in nam_list gefundeen Einträge in einer Variable gespeichert int a = 0; // a wird für die while Schleife gebraucht, und mit anzahl vergleichen, damit die Schleife nur Anzahl mal läuft int count = 0; // Count wird bis 4 gezählt, damit nach 5 aufrufen einen Zeilenumbruch erfolgen kann List<String> anzahl_list = new ArrayList<String>(); while(a!=anzahl){ if (count==4){ String na = nam_list.get(a); String br = na + "\n"; anzahl_list.add(br); a++; count = 0; } else { String na = nam_list.get(a); anzahl_list.add(na); a++; count++; } } { String[][] rowData = { { anzahl_list.get(0), anzahl_list.get(1), anzahl_list.get(2), anzahl_list.get(3), anzahl_list.get(4) }, { anzahl_list.get(5), anzahl_list.get(6), anzahl_list.get(7), anzahl_list.get(8), anzahl_list.get(9) }}; String[] columnNames = { "Name", "Beschreibung", "Schrank", "Tür", "Fach" }; JFrame f = new JFrame(); f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); JTable table = new JTable( rowData, columnNames ); f.add( new JScrollPane( table )); f.pack(); f.setVisible( true ); } // javax.swing.JOptionPane.showMessageDialog(null, anzahl_list); //Anzahl_list inklusive Umbrüche wird ausgegeben } catch (Exception t) { System.out.println(t.getMessage()); } } }); getContentPane().add(BorderLayout.SOUTH, unten); getContentPane().add(BorderLayout.NORTH, oben); getContentPane().add(panel); // Panel auf Frame packen // Komplettes Frame auf optimale Größe packen setVisible(true); // Mach das Fenster sichtbar } }
-
29.07.11 08:36 #4
Ich verstehe immernoch nichtht, wieso du den Umweg über eine Liste gehst, die Zeilenumbrüche bringen dir dann nur noch mehr arbeit. Schau mal hier:
Code java:1 2 3 4 5
String[] columnNames = {"Name", "Beschreibung", "Schrank", "Tür", "Fach"}; DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0); String[] rsRow = {name, beschreibung, schrank, tuer, fach}; //Variablennamen schreibt man in Java nicht groß tableModel.addRow(rwRow); JTable table = new JTable(tableModel);
Geändert von HonniCilest (29.07.11 um 08:39 Uhr)
Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
Hallo DerBuhl,
ich habe vor langer Zeit mal ein Tutorial über JTable und JList mit einer Anbindung über eine DB geschrieben. Vielleicht hilft dir der Artikel ja bei deinem Problem weiter.
Datenaufbereitung über JTabbedPane, JList und JTable – Tutorial
Gruß
Simonwww.itblogging.de - Informationen rund um die Informatik
Themen: Java, RCP, RAP, Linux, Shell, Ajax, Eclipse, Netzwerk, Security, PHP
-
Danke euch beiden für die Antworten, ich denke ihr habt recht und ich muss mich erstmal grundsätzlich mit JTable und JList auseinader setzen. Dannach frag ich euch dann nochmal
-
Sorry das ich so spät wieder nachfrage aber ich war im Urlaub.
So also ich bin leider immer noch nicht schlauer
. Ich habe den Code jetzt mal gekürzt und den Umbruch etc. von meinen letzen Versuchen herausgeschmissen.
Mein problem beginnt ca. in Zeile 140.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
package zumtesten; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.event.ActionListener; import javax.swing.JTable; import java.io.IOError; import java.io.IOException; import java.sql.*; import java.util.List; import java.util.ArrayList; public class FindArtikle extends JFrame { private JPanel panel; private JButton button1; private JButton button2; private JLabel oben; private JLabel unten; private JLabel abstand; private JLabel abstand2; private JLabel abstand3; private JLabel name; private JLabel abstand4; private JLabel abstand5; private JButton schrankpl; private JButton suchen; private JLabel abstand6; private JLabel abstand7; public FindArtikle() // Konstruktor { super("Fenster"); // Aufruf des Konstruktors der Superklasse mit übergabe eines Strings setSize(300, 300); // Fenster auf Grösse 300x300 setLocation (300,300); // Position auf 300x 300 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Beim schliessen des Fensters --> Programm beenden setLayout(new BorderLayout(6,6)); // Ein Layout für JFrame festlegen panel= new JPanel(new GridLayout(8,9)); // Ein Panel erzeugen mit GridLayout // Einen Button erzeugen button1 = new JButton("Menü"); button2 = new JButton("Beenden"); schrankpl = new JButton ("Schrankplan"); final TextField nametf = new TextField("", 30); unten = new JLabel("Version 1.0"); oben = new JLabel ("Lagerungssoftware"); abstand = new JLabel ("<html><b><font size='5'>Artikel suchen</font></b></html>"); abstand2 = new JLabel (""); abstand3 = new JLabel (""); abstand4 = new JLabel (""); abstand5 = new JLabel (""); abstand6 = new JLabel (""); abstand7 = new JLabel (""); name = new JLabel("Artikelname:"); suchen = new JButton("Suchen"); panel.add(abstand); panel.add(abstand6); panel.add(abstand7); panel.add(abstand3); panel.add(name); panel.add(nametf); panel.add(abstand2); panel.add(suchen); panel.add(abstand4); panel.add(abstand5);// Button auf Panel packen panel.add(button1); panel.add(button2); panel.add(schrankpl); button2.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { System.exit( 0 ); } } ); button1.addActionListener( new ActionListener() { public void actionPerformed (ActionEvent e){ AppWindow AppWindow4 = new AppWindow(); } }); schrankpl.addActionListener( new ActionListener() { public void actionPerformed (ActionEvent e) { schrankplan schrank = new schrankplan(); } }); suchen.addActionListener( new ActionListener() { public void actionPerformed (ActionEvent e) { String Name = nametf.getText(); Statement stmt; ResultSet rs; try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/lagerung"; Connection con = DriverManager.getConnection(url, "root", "Admin"); stmt = con.createStatement(); rs = stmt.executeQuery("Select * from Artikel where Name Like '%"+ Name +"%'"); List<String> nam_list = new ArrayList<String>(); while(rs.next()){ String Nam = rs.getString("Name"); nam_list.add(Nam); String Beschrei = rs.getString("Beschreibung"); nam_list.add(Beschrei); double Schran = rs.getDouble("Schrank"); String Schra = String.valueOf(Schran); nam_list.add(Schra); String Tue = rs.getString("Tuer"); nam_list.add(Tue); String Fac = rs.getString("Fach"); nam_list.add(Fac); } { String[][] rowData = { { nam_list.get(0), nam_list.get(1), nam_list.get(2), nam_list.get(3), nam_list.get(4) }, { nam_list.get(5), nam_list.get(6), nam_list.get(7), nam_list.get(8), nam_list.get(9) }}; String[] columnNames = { "Name", "Beschreibung", "Schrank", "Tür", "Fach" }; JFrame f = new JFrame(); f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); JTable table = new JTable( rowData, columnNames ); f.add( new JScrollPane( table )); f.pack(); f.setVisible( true ); } } catch (Exception t) { System.out.println(t.getMessage()); } } }); getContentPane().add(BorderLayout.SOUTH, unten); getContentPane().add(BorderLayout.NORTH, oben); getContentPane().add(panel); setVisible(true); } }
also ich habe das Problem, dass es in der Datenbank redundante Einträge gibt. Die Tabelle muss also mal mehr als 5, mal weniger als 5 Inhalte aufnehmen.
Durchbekomme ich ja nur eine Zeile ausgegeben. Hat vielleicht jemand einen Lösungsansatz für mich? Ich fürchte ich bin auf dem völlig falschen WegCode java:1
nam_list.get()
.
Ich habe es auch schon versucht mit:
das funktioniert aber leider auch nichtCode java:1 2 3 4
for(int i = 0; i<anzahl;i++){ String[][] rowData = { { nam_list.get(i)}}; }
. Ich bin echt ratlos
Geändert von DerBuhl (16.08.11 um 20:59 Uhr)
Ähnliche Themen
-
Selektion von JTable-Einträgen nicht mehr möglich und JProgressbar-Frage
Von Sacrent im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 20.05.10, 16:24 -
Richtigen Inhalt in dynamischen MC anzeigen
Von -Phantomas- im Forum Flash PlattformAntworten: 2Letzter Beitrag: 29.09.09, 14:33 -
JTable zum Anzeigen von Bildern
Von Guadrion im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 04.09.09, 17:04 -
eine unbekannte anzahl von einträgen anzeigen!
Von Niklas_ im Forum Relationale DatenbanksystemeAntworten: 7Letzter Beitrag: 23.12.04, 14:18 -
ComboBoxDaten in JTable anzeigen
Von Shizzl_chrizzl im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 27.10.04, 11:18





Zitieren
Login





