• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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;
}
}
}
 

Giskanne

Jonagold
Registriert
22.06.09
Beiträge
22
Ich habe die, meiner Meinung nach, wichtigsten Parts rot markiert. Ich hoffe ihr wisst eine Lösung für das Problem.
 

Giskanne

Jonagold
Registriert
22.06.09
Beiträge
22
Hat keiner eine Idee gibt es keine Lösung antwortet mit wengstens ?? :)
 

Mikrolisk

Hildesheimer Goldrenette
Registriert
12.08.09
Beiträge
687
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