Swing + JTable - aktives Feld auslesen

Luxor

Mitglied
Moin, moin,

Vorgeschichte:
als Projektaufgabe bei einem Prof habe ich ein Matrixproblem zu lösen. Das eigentliche Problem daran ist das - hmm -sagen wir mal wir uns beide nicht mögen!
Also wird er versuchen jede Kleinigkeit zu bemängeln, was ja bei anderen Studenten kein Fehler wäre ist bei mir natürlich einer. :(

Problem:
Also die Matrix lass ich über eine JTable in der Swing GUI erscheinen, wenn nicht alle Felder vom Benützer des Programms gefüllt werden erzeuge das Proggie ein Warnung - denke soweit ist das noch logisch :)
Wenn jetzt beim letzten Eintrag in die JTable kein Tab oder Return gedrückt wird (ich denke das Feld ist noch aktiv) kann ich mit getValueAt(...) den Wert nicht auslesen. Was mir natürlich die Warnung schmeist.
Für meine Komilitonen und mich ist das logisch, aber das kann man ja auch anders sehen :rolleyes:
Hat jemand ne Idee wie ich trotzdem an den Inhalt herankomme ?

MFG

Luxor

„Programmieren ist wie küssen: Man kann darüber reden, man kann es beschreiben, aber man weiß erst, was es bedeutet, wenn man es getan hat.“ Andree Beaulieu-Green
 
Hallo!

Null problemo ;-)

Code:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTable;

/*
 * Created on 02.07.2004
 *
 * TODO 
 */

/**
 * @author Administrator
 */
public class JTableDemo2 extends JFrame {

    private final JTable table;

    private final JButton btnCheck;

    public JTableDemo2() {
        super("JTableDemo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        table = new JTable(3,3);

        getContentPane().add(table, BorderLayout.CENTER);

        btnCheck = new JButton("Check");
        btnCheck.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                int rowCnt = table.getRowCount();
                int clmCnt = table.getColumnCount();

                //Wir tun einfach so als hätte jemand Enter / Tab gedrückt ^^
                table.getCellEditor().stopCellEditing();

                //Den Inhalt der Tabelle ausgeben ...
                for (int i = 0; i < rowCnt; i++) {
                    for (int j = 0; j < clmCnt; j++) {
                        System.out.print(table.getValueAt(i, j));
                        System.out.print(" ");
                    }
                    System.out.println();
                }

            }

        });

        getContentPane().add(btnCheck, BorderLayout.SOUTH);

        setVisible(true);
        pack();
    }

    public static void main(String[] args) {
        new JTableDemo2();
    }
}

Gruß Tom
 
Original geschrieben von Thomas Darimont
...
//Wir tun einfach so als hätte jemand Enter / Tab gedrückt ^^
table.getCellEditor().stopCellEditing();
...

Danke für das Beispiel, funktionierte auf anhieb !
Bist mein "Hero of the Day" ! :)

Falls das hier noch einer braucht zur Sicherheit
erstmal abfragen ob der CellEditor noch aktiv ist.
Also fürn Anfänger (like me) sehe das so aus:


if(table.getCellEditor() != null) { table.getCellEditor().stopCellEditing(); }

(Wau kann auch mal was Produktives posten :p )
Und das beste daran ist - mein Prof kann nix zum rummäkeln finden ! Ihn wurmts mich freuts! :)

MFG

Luxor

"Alles was Sie sehen oder hören oder in irgendeiner Weise erfahren, gilt spezifisch für Sie. Sie erschaffen das Universum,
indem Sie es wahrnehmen, also ist alles, was Sie im Universum wahrnehmen für Sie spezifisch." Einmal Rupert und zurück
 
Zurück