• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

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