• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> 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