JTable: Eingaben mit ENTER übernehmen

Herr Kaiser

Bekanntes Mitglied
Hallo Forum,

ich kann in meiner Tabelle Änderungen nicht wie gewohnt mit der ENTER- bzw. RETURN-Taste übernehmen. Ich vermute, es liegt an meinem CellEditor. Denn solange ich keinen eigenen Editor zufüge, zeigt sich das gewünschte Verhalten: ENTER übernimmt den Eintrag und übergibt den Fokus an die Zelle in der darunterliegenden Tabellenreihe.

Wenn ich einen eigenen CellEditor hinzufüge, hat die ENTER-Taste keine Wirkung mehr. Ich muss den Fokus entweder durch die TAB- oder Pfeiltasten oder per Mausklick auf eine andere Zelle bringen, damit die Eingabe übernommen wird.

Mache ich etwas falsch oder muss ich die Funktion der ENTER-Taste bei eigenem CellEditor selbst implementieren?

Hier mal mein Editor (der vermutlich noch Unzulänglichkeiten enthält, aber für's erste ansonsten gut funktioniert):

Java:
import javax.swing.table.TableCellEditor;
import java.awt.Component;
import java.awt.event.MouseEvent;
import java.util.EventObject;
import javax.swing.text.MaskFormatter;
import java.lang.String.*;
import javax.swing.*;
import javax.swing.InputVerifier;
import javax.swing.text.JTextComponent;
import javax.swing.JComponent;

public class MyCellEditor extends AbstractCellEditor implements TableCellEditor {

    JFormattedTextField ftf;
    MaskFormatter formatter;

    public MyCellEditor(String maske, String erlaubt, String platzhalter, Double min, Double max) {
        if (maske.equals("") == false) {
            try {
                formatter = new MaskFormatter(maske); // Formatmaske
                if (erlaubt.equals("") == false) {
                    formatter.setValidCharacters(erlaubt); // Gueltige Zeichen
                }
                if (platzhalter.equals("") == false) {
                    formatter.setPlaceholder(platzhalter); // Platzhalter
                }
                ftf = new JFormattedTextField(formatter);
            } catch (Exception e) {
            }
        } else {
            ftf = new JFormattedTextField(); // wenn keine Formatter-Informationen uebergeben werden
        }
        ftf.setInputVerifier(new MyInputVerifier(min, max));
    }

    // Zelle schon nach einfachem Klick editierbar
    @Override
    public boolean isCellEditable(EventObject anEvent) {
        if (anEvent instanceof MouseEvent) {
            return ((MouseEvent) anEvent).getClickCount() >= 1;  
        }
        return true;
    }

    public Object getCellEditorValue() {
        return ftf.getText().trim(); // eingebener Wert wird übernommen
    }

    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        String stringValue = (String) value;
        try {
            stringValue.trim();
        } catch (Exception e) {
        }
        ftf.setText((stringValue).trim());
        return ftf;
    }

//     Focuswechsel verhindern bei ungueltiger Eingabe
    @Override
    public boolean stopCellEditing() {
        if (ftf.getInputVerifier().shouldYieldFocus(ftf) == true) {
            fireEditingStopped();
            return true;
        } else {
            return false;
        }
    }
}

// Eingabepruefung
class MyInputVerifier extends InputVerifier {

    private Object min, max;

    public MyInputVerifier(Object dmin, Object dmax) {
        min = dmin;
        max = dmax;
    }

    public boolean verify(JComponent input) {
        if (!(input instanceof JTextComponent)) {
            return false;
        }
        if (min==null & max==null){
            return true;
        }
        JTextComponent comp = (JTextComponent) input;
        Double val = null;
        try {
            val = Double.parseDouble(comp.getText().trim());
        } catch (NumberFormatException ex) {
            JOptionPane.showMessageDialog(null, "NumberFormatException in Inputverifier!", "Hinweis", JOptionPane.INFORMATION_MESSAGE);
        }
        Boolean gueltig = (val >= (Double) min && val <= (Double) max);
        if (gueltig == false) {
            JOptionPane.showMessageDialog(null, "Der eingegebene Wert " + val + " liegt nicht im gültigen Bereich von " + min + " bis " + max + "!", "Hinweis", JOptionPane.INFORMATION_MESSAGE);
        }
        return gueltig;
    }
}
 

eRaaaa

Top Contributor
Pobiere es mal mit
Java:
		ftf.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				stopCellEditing();
			}
		});

im Konstruktor von MyCellEditor!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A JTable nimmt eingaben von tastatur nicht an? Java Basics - Anfänger-Themen 2
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
richis-fragen JTable sowohl Spaltennamen wie auch Spaltenbeschriftungen Java Basics - Anfänger-Themen 7
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
G JTable Listselectionlistener friert das Programm ein Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
J Zelleninhalt einer Jtable löschen Java Basics - Anfänger-Themen 2
E JTable einzelne Zelle färben Java Basics - Anfänger-Themen 2
thobren jtable arraylist Java Basics - Anfänger-Themen 12
thobren JTable Icon Java Basics - Anfänger-Themen 1
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
H Kapselung JProgressBar in JTable, aber getValueAt() greift nicht Java Basics - Anfänger-Themen 7
G JTable, Zeile auswählen und Ergebnis an Schaltfläche übergeben Java Basics - Anfänger-Themen 4
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
J JTable Spalteninhalt löschen Java Basics - Anfänger-Themen 1
J JTable Titel wird nicht angezeigt Java Basics - Anfänger-Themen 6
B jTable Spalte summieren Java Basics - Anfänger-Themen 7
N JTable auslesen Java Basics - Anfänger-Themen 6
O JTable in Excel mit Farben Java Basics - Anfänger-Themen 8
O Kommentar auf JTable Zelle Java Basics - Anfänger-Themen 2
M Jtable Reenderer Java Basics - Anfänger-Themen 0
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
M Jtable änderung updaten Java Basics - Anfänger-Themen 2
O JTable Suchfunktion Java Basics - Anfänger-Themen 2
M jTable bekommt null Java Basics - Anfänger-Themen 1
M JTable an andere Klasse übergeben Java Basics - Anfänger-Themen 2
M Datenbank in jTable Laden Java Basics - Anfänger-Themen 49
M Klasse in JTable einfügen Java Basics - Anfänger-Themen 7
S JTable Java Basics - Anfänger-Themen 16
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L JTable Tagebuch Spaltenhöhe verändern Java Basics - Anfänger-Themen 3
S JTable - Filter an anderen Colums Java Basics - Anfänger-Themen 2
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
C JTable update mit MySQL Datenbank Java Basics - Anfänger-Themen 1
C Best Practice JTable in MVC Pattern Java Basics - Anfänger-Themen 7
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
A zykl. Aktualisierne JTable Java Basics - Anfänger-Themen 9
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
C Werte aus JTable auslesen Java Basics - Anfänger-Themen 4
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
V JTable welcher Listener ? Java Basics - Anfänger-Themen 7
D Falsche Zeile wird in JTable gelöscht Java Basics - Anfänger-Themen 6
D MySQL Abfrage in JTable speichern Java Basics - Anfänger-Themen 43
D JTable Zeile wird nicht in MySQL gelöscht Java Basics - Anfänger-Themen 16
D JTable Zeilen löschen Java Basics - Anfänger-Themen 5
C Klassen JTable wird ohne Header aufgebaut Java Basics - Anfänger-Themen 6
K (JTable) Text einer Zelle auf der linken Seite kürzel Java Basics - Anfänger-Themen 2
B Kniffel JTable Java Basics - Anfänger-Themen 5
N JTable flackert Java Basics - Anfänger-Themen 8
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
J ArrayList wird in JTable falsch angezeigt Java Basics - Anfänger-Themen 0
J Eintragen von Personen in JTable Java Basics - Anfänger-Themen 4
X JTable mit grünen und roten Punkten Java Basics - Anfänger-Themen 2
LexeB4F DEL --> JTable Zelleninhalt Java Basics - Anfänger-Themen 3
R JTable Auslesen Java Basics - Anfänger-Themen 1
Crazynet jTable erste Zeile mit deffinierten Werten Java Basics - Anfänger-Themen 0
K Collections Sortieren nach zweiter Spalte in JTable Java Basics - Anfänger-Themen 18
J JTable Wert gleich überschreiben Java Basics - Anfänger-Themen 6
S Zeile entfernen aus JTable Java Basics - Anfänger-Themen 15
S JTable clonen Java Basics - Anfänger-Themen 5
H Best Practice PDF JTable Java Basics - Anfänger-Themen 4
S In JTable Zeile selektieren mit Mausklick Java Basics - Anfänger-Themen 16
D JTable Probleme beim Sortieren von Zahlen. Java Basics - Anfänger-Themen 6
M JTable mit XML datei befüllen Java Basics - Anfänger-Themen 1
F Zeile bei JTable hinzufügen Java Basics - Anfänger-Themen 6
K JTable Bild einfügen Java Basics - Anfänger-Themen 1
M [JTable] getValue throws ArrayOutOfBoundException Java Basics - Anfänger-Themen 1
B JTable - Highlighter ??? Java Basics - Anfänger-Themen 3
S JTable LinkedList <Objekt> befüllen Java Basics - Anfänger-Themen 1
S JTable dynamisch mit Datenbankinhalten füllen Java Basics - Anfänger-Themen 6
W JTable mit einem JButton-Array füllen Java Basics - Anfänger-Themen 4
O JScrollPane zu gross für JTable Java Basics - Anfänger-Themen 2
L JTable Row selected -> fireTableDataChange do nothing. Java Basics - Anfänger-Themen 3
E JTable + TableModel updaten? Java Basics - Anfänger-Themen 1
O java.lang.IndexOutOfBoundsException JTable autoSort Java Basics - Anfänger-Themen 5
F JTable adding Row Java Basics - Anfänger-Themen 5
P jTable getColumnClass, mit unterschiedlichen Klassen in einer Column? Java Basics - Anfänger-Themen 5
M Eingabe in JTable bei Eingabe korrigieren Java Basics - Anfänger-Themen 2
Z jtable problem (das tausendste??) Java Basics - Anfänger-Themen 12
J JTable Java Basics - Anfänger-Themen 7
T JTable Java Basics - Anfänger-Themen 2
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
S Farbe eine Zeile in JTable ändern, wenn JButton geklickt wurd Java Basics - Anfänger-Themen 4
Uzi21 jTable / Inhalt speichern Java Basics - Anfänger-Themen 2
M Problem mit JTable und Model Java Basics - Anfänger-Themen 3
F Methoden JTable + 2 For-Schleifen Java Basics - Anfänger-Themen 4
C jtextfield und jtable Java Basics - Anfänger-Themen 34
X JTable mit Inhalten aus JTextField o.ä. füllen Java Basics - Anfänger-Themen 4
G JTable: SelectionListener Problem Java Basics - Anfänger-Themen 2
G JTable: Werte in Tabelle direkt ansprechen Java Basics - Anfänger-Themen 3
S Icons in JTable per ResultSet Java Basics - Anfänger-Themen 5
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
M Zelle von JTable mit Rahmen versehen Java Basics - Anfänger-Themen 4
G JTable: Inhalt einer selektierten Zeile speichern Java Basics - Anfänger-Themen 2
G JTable: mehrzeilige Zellen erstellen Java Basics - Anfänger-Themen 2
W Problem JTable Java Basics - Anfänger-Themen 5
M JTable wird nicht aktualisiert Java Basics - Anfänger-Themen 4
D jProgressBar soll bei 100% sein wenn sql Abfrage inkl. jTable schreiben fertig ist... Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben