ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
1166
1166
EMPFEHLEN
-
Hallo ich habe ein Problem!
Und zwar lese ich aus einer XML-Datei Vokabeln und deren Übersetzung aus. Diese werden in einem Vector gespeichert.
Diese möchte ich nun in einem JTable in 2 Spalten ausgeben lassen.
Als erstes die Klasse für die Vokabeln:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
public class Vokabeln { private String deutsch; private String englisch; public Vokabeln() {} //get-Methode für deutsche Vokabeln public String getDeutsch() { return deutsch; } //set-Methode für deutsche Vokabeln public void setDeutsch(String deutsch) { this.deutsch = deutsch; } //get-Methode für englische Vokabeln public String getEnglisch() { return englisch; } //set-Methode für englische Vokabeln public void setEnglisch(String englisch) { this.englisch = englisch; } }
Hier Teile des XML-Parsers
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
public static Vector vokabelVector = new Vector(); ... Vokabeln vokabeln = new Vokabeln(); while (parser.nextTag() != XmlPullParser.END_TAG) { parser.require(XmlPullParser.START_TAG, null, null); String name = parser.getName(); String text = parser.nextText(); System.out.println ("<"+name+">"+text); //wenn tagname = deutsch wird der Eintrag in Vokabeln.setDeutsch gesetzt if (name.equals("deutsch")) vokabeln.setDeutsch(text); //wenn tagname = englisch wird der Eintrag in Vokabeln.setEnglisch gesetzt else if (name.equals("englisch")) vokabeln.setEnglisch(text); parser.require(XmlPullParser.END_TAG, null, name); } vokabelVector.addElement(vokabeln);
Das war ein Versuch allerdings überschreibt er jetzt immer die erste Zeile, so dass am Ende nur eine Vokabel mit Übersetzung in der Tabelle steht. Weil er jedes Mal einen neuen String benutzt.Code :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
import java.awt.BorderLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.WindowConstants; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; public class Dictionary extends javax.swing.JFrame { public static boolean dictionary_running; private JPanel jPanel_Dictionary; private JTable jTable_Dictionary; public TableModel jTable_DictionaryModel; public Dictionary(String s) { super(); initGUI(); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); dictionary_running = false; } }); } private void initGUI() { try { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); { jPanel_Dictionary = new JPanel(); getContentPane().add(jPanel_Dictionary, BorderLayout.CENTER); jPanel_Dictionary.setLayout(null); { for(int k= 0 ; k< ReadXML.vokabelVector.size() ;k++) { //Füllen des bookVectors mit Vokabeln Vokabeln vokabeln = (Vokabeln) ReadXML.vokabelVector.elementAt(k); jTable_DictionaryModel = new DefaultTableModel( new String[][] { { vokabeln.getDeutsch().toString(), vokabeln.getEnglisch().toString()} }, new String[] { "Column 1", "Column 2" }); } jTable_Dictionary = new JTable(); jPanel_Dictionary.add(jTable_Dictionary); jTable_Dictionary.setModel(jTable_DictionaryModel); jTable_Dictionary.setBounds(28, 28, 343, 210); } } pack(); setSize(400, 300); } catch (Exception e) { e.printStackTrace(); } } }
Hat jemand einen Tipp für mich vielen Dank im voraus.
Ratze79
-
03.06.07 19:10 #2
Hallo,
in der Tabelle ist zum Schluss nur eine Zeile, weil das TableModel für jede Vokabel wieder überschrieben wird. Statt in jedem Durchlauf der for-Schleife ein neues Model anzulegen, müssten alle Vokabeln in einem Array gespeichert und erst zum Schluss ein Model erzeugt werden, ungefähr so:
Code :1 2 3 4 5 6 7 8
String s[][] = new String[ReadXML.vokabelVector.size()][2]; for(int k= 0; k < s.length; k++) { Vokabeln vokabeln = (Vokabeln) ReadXML.vokabelVector.elementAt(k); s[k][0] = vokabeln.getDeutsch().toString(); s[k][1] = vokabeln.getEnglisch().toString(); } jTable_DictionaryModel = new DefaultTableModel(s,new String[] {"Column 1", "Column 2"});
-
Super hat geklappt, vielen Dank für die Hilfe!
Wo der Fehler liegt hab ich mir auch schon gedacht, nur leider bin ich auf keine gescheite Lösunge gekommen.
Gruß Ratze
Ähnliche Themen
-
JTable aus Vector füllen
Von tameck im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 14.04.08, 11:03 -
JTable dynamisch füllen
Von DonAqua im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 18.02.08, 16:09 -
JTable mit Inhalt füllen
Von Musicman75 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 7Letzter Beitrag: 09.08.07, 00:38 -
Formulara mit Daten aus DB füllen und dann die neuen Daten aus Formular in die DB
Von StreHa im Forum PHPAntworten: 2Letzter Beitrag: 09.07.06, 12:18 -
JTable dynamisch füllen.
Von Phil_adelphia im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 8Letzter Beitrag: 10.02.05, 10:06





Zitieren
Login





