• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Problem beim Programmieren von Java in Eclipse

Giskanne

Jonagold
Registriert
22.06.09
Beiträge
22
So, ich arbeite mal wieder an was neuem udn komm nicht weiter. Ich versuche eine Tabelle in ein GridLayout einzufügen. ICh denke das Problem liegt darin, die Tabelle einzufügen, weil ich die Tabelle schon einzelnd getestet habe, sowie das GridLayout.


import java.awt.Container;

import java.awt.GridLayout;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;


public class Hauptprogramm extends JComponent {


public static void main(String[] args) {

JFrame f = new JFrame();
f.setSize(600, 600);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout( new GridLayout(2,2,10,10));
f.getContentPane().add( new Hauptprogramm());

f.setVisible(true);
}


public Hauptprogramm(){

Container cp = getRootPane();
JTable table = new JTable(new DataModel());
cp.add(new JScrollPane(table));




}

class DataModel extends AbstractTableModel {
Object[][] data = { { "one", "two", "three", "four" },
{ "five", "six", "seven", "eight" },
{ "nine", "ten", "eleven", "twelve" }};

// Prints data when table changes:
class TML implements TableModelListener {
public void tableChanged(TableModelEvent e) {

for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[0].length; j++);

}
}
}

public DataModel() {
addTableModelListener(new TML());
}

public int getColumnCount() {
return data[0].length;
}

public int getRowCount() {
return data.length;
}

public Object getValueAt(int row, int col) {
return data[row][col];
}

public void setValueAt(Object val, int row, int col) {
data[row][col] = val;
// Indicate the change has happened:
fireTableDataChanged();
}

public boolean isCellEditable(int row, int col) {
return true;
}
}
}
 
Ich habe die, meiner Meinung nach, wichtigsten Parts rot markiert. Ich hoffe ihr wisst eine Lösung für das Problem.
 
Hat keiner eine Idee gibt es keine Lösung antwortet mit wengstens ?? :)
 
Mach mal folgendes aus der main()-Methode und dem Konstruktor:

public static void main(String[] args) {
JFrame f = new JFrame();
f.setSize(600, 600);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//f.setLayout( new GridLayout(2,2,10,10)); // Nein! Das erwartet 4 Komponenten, die Tabelle ist nur eine!
f.setLayout(new BorderLayout());
f.getContentPane().add(new Hauptprogramm(), "Center");
f.setVisible(true);
}


public Hauptprogramm() {
// kein getContentPane, das nur bei Frames. Hier haben wir schon eine Komponente!
setLayout(new BorderLayout());
DefaultTableModel dtm = new DefaultTableModel();
JTable table = new JTable(dtm);
// *
add(new JScrollPane(table), "Center");
}



Für dieses DemoProgramm ist das GridLayout nicht geeignet, Du willst doch nur die Tabelle darstellen und keine 4 Komponenten.

Dann fehlt noch die Initialisierung der Tabelle, denn Du hast noch keine Spalten definiert! (beim "// *"):

dtm.addColumn("Spalte 1");
dtm.addColumn("Spalte 2");


Viele Grüße,
Andreas