1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Problem beim Programmieren von Java in Eclipse

Dieses Thema im Forum "Andere Software" wurde erstellt von Giskanne, 15.01.10.

  1. Giskanne

    Giskanne Jonagold

    Dabei seit:
    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;
    }
    }
    }
     
  2. Giskanne

    Giskanne Jonagold

    Dabei seit:
    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.
     
  3. Giskanne

    Giskanne Jonagold

    Dabei seit:
    22.06.09
    Beiträge:
    22
    Wer echt nett, wenn ihr mir helfen könntet :D
     
  4. Giskanne

    Giskanne Jonagold

    Dabei seit:
    22.06.09
    Beiträge:
    22
    Hat keiner eine Idee gibt es keine Lösung antwortet mit wengstens ?? :)
     
  5. Giskanne

    Giskanne Jonagold

    Dabei seit:
    22.06.09
    Beiträge:
    22
    mhh. ich fühle mich ziemlich verlassen :D
     
  6. Mikrolisk

    Mikrolisk Hildesheimer Goldrenette

    Dabei seit:
    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
     

Diese Seite empfehlen