Hallo,
ich habe vor Kurzem mit java angefangen. Ich versuche ein Programm zu programmieren, das eine Tabelle, ausgelesen aus einer xml-Datei, anzeigt. Später soll diese dann je nach Vorgabe des Nutzers im Programm angepasst werden können.
Ich habe die Daten auch alle in eine ArrayList laden können, nun scheitere ich jedoch daran eine Tabelle mit diesen Daten zu befüllen.
Hiermit lese ich die XML-Datei aus und speichere die Daten dann in 3 verschiedene Arraylisten (name, costs, category).
Wenn ich mir das ins Log ausgeben lasse, funktioniert das wunderbar.
[CODE lang="java" title="XML auslesen"]private static final String FILENAME = "content.xml";
LootMain(){
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File(FILENAME));
doc.getDocumentElement().normalize();
NodeList nodelist = doc.getElementsByTagName("item");
ArrayList<String> name = new ArrayList<String>();
ArrayList<Integer> costs = new ArrayList<Integer>();
ArrayList<String> category = new ArrayList<String>();
for (int temp = 0; temp < nodelist.getLength(); temp++) {
Node node = nodelist.item(temp);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
String id = element.getAttribute("id");
System.out.println(id);
name.add(element.getElementsByTagName("name").item(0).getTextContent());
costs.add(Integer.valueOf(element.getElementsByTagName("costs").item(0).getTextContent()));
category.add(element.getElementsByTagName("category").item(0).getTextContent());
}
}[/CODE]
Nun will ich ein Fenster generieren und darin eine Tabelle erstellen, die diese ArrayList beinhaltet. Dafür füge ich die drei ArrayLists zusammen in eine einzige: data.
[CODE lang="java" highlight="9"] List<String> data = new ArrayList<String>();
data.addAll(name);
data.add(String.valueOf(costs));
data.addAll(category);
JFrame frame = new JFrame("Generator");
String[] columnNames = { "Name", "Costs", "Category" };
Object[] objdata = data.toArray();
JPanel p = new JPanel();
JTable j = new JTable(objdata, columnNames);[/CODE]
In Zeile 9 bekomme ich nun den Fehler: The constructor JTable(Object[], String[]) is undefined
Ich dachte das läge womöglich an der Variablen-Klasse, deshalb habe ich bereits versucht data in ein Object umzuwandeln. Das brachte jedoch nicht den gewünschten Erfolg.
Könnt ihr mir helfen?
Danke im Voraus!
Beste Grüße
ich habe vor Kurzem mit java angefangen. Ich versuche ein Programm zu programmieren, das eine Tabelle, ausgelesen aus einer xml-Datei, anzeigt. Später soll diese dann je nach Vorgabe des Nutzers im Programm angepasst werden können.
Ich habe die Daten auch alle in eine ArrayList laden können, nun scheitere ich jedoch daran eine Tabelle mit diesen Daten zu befüllen.
Hiermit lese ich die XML-Datei aus und speichere die Daten dann in 3 verschiedene Arraylisten (name, costs, category).
Wenn ich mir das ins Log ausgeben lasse, funktioniert das wunderbar.
[CODE lang="java" title="XML auslesen"]private static final String FILENAME = "content.xml";
LootMain(){
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File(FILENAME));
doc.getDocumentElement().normalize();
NodeList nodelist = doc.getElementsByTagName("item");
ArrayList<String> name = new ArrayList<String>();
ArrayList<Integer> costs = new ArrayList<Integer>();
ArrayList<String> category = new ArrayList<String>();
for (int temp = 0; temp < nodelist.getLength(); temp++) {
Node node = nodelist.item(temp);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
String id = element.getAttribute("id");
System.out.println(id);
name.add(element.getElementsByTagName("name").item(0).getTextContent());
costs.add(Integer.valueOf(element.getElementsByTagName("costs").item(0).getTextContent()));
category.add(element.getElementsByTagName("category").item(0).getTextContent());
}
}[/CODE]
Nun will ich ein Fenster generieren und darin eine Tabelle erstellen, die diese ArrayList beinhaltet. Dafür füge ich die drei ArrayLists zusammen in eine einzige: data.
[CODE lang="java" highlight="9"] List<String> data = new ArrayList<String>();
data.addAll(name);
data.add(String.valueOf(costs));
data.addAll(category);
JFrame frame = new JFrame("Generator");
String[] columnNames = { "Name", "Costs", "Category" };
Object[] objdata = data.toArray();
JPanel p = new JPanel();
JTable j = new JTable(objdata, columnNames);[/CODE]
In Zeile 9 bekomme ich nun den Fehler: The constructor JTable(Object[], String[]) is undefined
Ich dachte das läge womöglich an der Variablen-Klasse, deshalb habe ich bereits versucht data in ein Object umzuwandeln. Das brachte jedoch nicht den gewünschten Erfolg.
Könnt ihr mir helfen?
Danke im Voraus!
Beste Grüße