jZable - Zelle direkt überschreiben

hansgerber

Mitglied
Hallo,,
habe in meinem Projekt eine jTable integriert, bei der mittels Button-Klick Zeilen hinzugefügt und entfernt werden können. Beim Zufügen neuer Zeilen werden Standardwerte in den einzelnen Zellen gesetzt, die dann hinterher überschrieben werden sollen.
Nur, wenn die Zelle selektiert ist und ich Werte eintippe, werden die neue eingegebenen Zeichen hinten anghängt anstelle die alten zu überschreiben. Also, wenn der Vorgabewert "10" auf "20" geändert werden soll, steht dann "1020" in der Zelle (es sei denn ich selektiere gezielt mit der Maus).
Meinen bisherigen Recherchen folgend, muss ich den CellEditor anpassen, weiss aber nicht wie und wo ich da ansetzen muss.

Danke im Voruas für jeden Tipp.
Hans
 

nrg

Top Contributor
KeyListener wäre eine Option. Somit ist es so wie im Excel. Zelle markiert (1 Klick) ersetzt, in der Zelle (Doppelklick) hängt an.
Java:
table.addKeyListener( new KeyListener() {
			@Override
			public void keyPressed(KeyEvent arg0) {
				table.setValueAt( "", table.getSelectedRow(), table.getSelectedColumn() );	
			}
			@Override
			public void keyReleased(KeyEvent arg0) {}
			@Override
			public void keyTyped(KeyEvent arg0) {}
		});
 

hansgerber

Mitglied
Jaa, fast.
Allerdings löscht es mir jetzt alle Standardwerte, wenn ich z.B. mit Tab navigiere ohne was ändern zu wollen. Es soll ja nur dann sofort überschreiben werden,wenn ich was neues eintippe.
Kann ich die Tab-Taste und die Pfeil-tasten irgendwie ausschliessen ?

Hans

[Editiert]
O.K., habs hinbekommen -> mittels Key-Listener und Abfangen der Tab-Taste und der Pfeil-Tasten funktioniert diese Methode.:applaus:

Vielen Dank
 
Zuletzt bearbeitet:

KrokoDiehl

Top Contributor
Hallo. Also eine sehr direkte, obgleich einfache Lösung wäre folgende:
Java:
// initialisierung deiner Tabelle...
JTextField editorField = new JTextField();
editorField.setBorder(null); // wichtig für Darstellung in Tabelle
editorField.addFocusListener(new FocusAdapter()
{
    // der FocusListener sorgt dafür, dass Zellen, die via Doppelklick editiert werden,
    // direkt alles selektieren

    @Override
    public void focusGained(FocusEvent event)
    {
        ((JTextField) event.getComponent()).selectAll();
    }
});

// folgenden Aufruf für alle Datentypen machen, die in deiner Tabelle behandelt werden,
// wirklich Sinn aber macht es wohl nur da, wo JTextFields als Editoren benutzt werden
myTable.setDefaultEditor(String.class, new DefaultCellEditor(editorField)
{
    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
    {
        Component comp = super.getTableCellEditorComponent(table, value, isSelected, row, column);
        if (comp instanceof JTextComponent)
            ((JTextComponent) comp).selectAll();
        return comp;
    }
});

Über diese Methode erreichst du, dass Zellen bei der direkten Eingabe (Drücken irgendeiner Taste, wenn die Zelle selektiert ist) den vorhandenen Inhalt überschreiben. Der FocusListener sorft dafür, dass es beim Editieren via Doppelklick so ist, der CellEditor dass es bei der Tastatur so ist.
Diese Methodik eignet sich dann zB nicht, wenn du eigene Editorkomponenten für die Zellen hast.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E JTable einzelne Zelle färben Java Basics - Anfänger-Themen 2
A Array Ansprache einer Zelle über Punktnotation? Java Basics - Anfänger-Themen 3
O Kommentar auf JTable Zelle Java Basics - Anfänger-Themen 2
M CellReender Zellenfarbe int abhängigkeit einer anderen Zelle Java Basics - Anfänger-Themen 13
J GridPane per Maus Zelle bekommen, wie? Java Basics - Anfänger-Themen 4
S Prüfen ob Zelle in Excel leer ist funktioniert nicht (Apache POI) Java Basics - Anfänger-Themen 18
K (JTable) Text einer Zelle auf der linken Seite kürzel Java Basics - Anfänger-Themen 2
J Formattierte Zelle nicht mitzählen Java Basics - Anfänger-Themen 1
M Zelle von JTable mit Rahmen versehen Java Basics - Anfänger-Themen 4
S JTable mit Text UND Icon in einer Zelle Java Basics - Anfänger-Themen 5
I Hintergrundfarbe einer Zelle in einer JTable Java Basics - Anfänger-Themen 10
G POI: Zelle aus einer Tabelle kopieren und in einr anderen einfügen Java Basics - Anfänger-Themen 5
W Eine Zelle einer Tabelle die Schriftfarbe ändern Java Basics - Anfänger-Themen 5
C Bild in JTable verändern (nach einem Klick auf Zelle) Java Basics - Anfänger-Themen 4
G zelle(n) makieren, button klick, Zelle(n) farbig Java Basics - Anfänger-Themen 4
R einzelne Zelle einer JTable bearbeiten Java Basics - Anfänger-Themen 2
G Wert in einer Zelle ersetzen Java Basics - Anfänger-Themen 4
E Inhalt einer array zelle prüfen? Java Basics - Anfänger-Themen 2
F Aktualisieren einer einzelnen Zelle in JTable Java Basics - Anfänger-Themen 2
S setCellRenderer für EINZELNE Zelle Java Basics - Anfänger-Themen 9
K Zelle in JTable sperren? Java Basics - Anfänger-Themen 2
M JTable Focus bleibt auf Zelle Java Basics - Anfänger-Themen 4
R JTable - Wert einer selektierten Zelle auslesen Java Basics - Anfänger-Themen 1
K Hintergrundfarbe einer Tabellen-Zelle verändern Java Basics - Anfänger-Themen 2
J Jtable - wie einzelne zelle markieren Java Basics - Anfänger-Themen 8
Avalon Request direkt aus Eclipse wie bei Postman Java Basics - Anfänger-Themen 3
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
J GUI wird direkt nach dem erstellen weiß übermalt Java Basics - Anfänger-Themen 3
J Direkt studieren? Oder autodidaktisch lernen? Java Basics - Anfänger-Themen 20
P Zufälliges Wort direkt aus einer Liste ausgeben Java Basics - Anfänger-Themen 9
Z ArrayList direkt feste Größe mitgeben Java Basics - Anfänger-Themen 13
X Dateien direkt hintereinander schreiben, Dateiname Java Basics - Anfänger-Themen 25
A Vererbung Mit Casten direkt auf Sub-Klasse Zugreiffen Java Basics - Anfänger-Themen 6
Q Tastatureingabe direkt nach Eingabe (ohne zwischenzeitliches "Return" o.Ä ) weiterverwenden Java Basics - Anfänger-Themen 1
J JDialog: wie kann ich ihn direkt als invisible erstellen Java Basics - Anfänger-Themen 7
S java tastendrücke direkt abfangen und printen Java Basics - Anfänger-Themen 3
J Objekte zur Laufzeit erzeugen und direkt verwenden Java Basics - Anfänger-Themen 9
S Direkt Instanzen anlegen Java Basics - Anfänger-Themen 1
G JTable: Werte in Tabelle direkt ansprechen Java Basics - Anfänger-Themen 3
D Direkt Klassen Initalisierung Java Basics - Anfänger-Themen 3
F Variablen Variable durch die direkt auf verschiede Objekte zugegriffen werden kann Java Basics - Anfänger-Themen 5
H Text ausdrucken, den ich entweder direkt in die Kommandozeile schreibe, oder über input redirect übe Java Basics - Anfänger-Themen 2
B Methoden Methode Direkt starten (über Kommandokonsole) Java Basics - Anfänger-Themen 5
P .class Datei direkt starten (optional Java Datei direkt starten) Java Basics - Anfänger-Themen 13
M Imports einzeln oder direkt komplette Pakete .*? Java Basics - Anfänger-Themen 26
T Input/Output Direkt auf Eingabe reagieren Java Basics - Anfänger-Themen 8
M Compiler-Fehler Exceptions lieber throwen oder direkt catchen? Java Basics - Anfänger-Themen 8
P int Array direkt einer Funktion übergeben Java Basics - Anfänger-Themen 3
D Access Abfrage - Results direkt als Array erhalten Java Basics - Anfänger-Themen 2
L Postleitzahl direkt nach Eingabe prüfen? Java Basics - Anfänger-Themen 7
D Javacode direkt in Betriebsystemabhängiges binary umwandeln Java Basics - Anfänger-Themen 5
D Ist es eigentlich ungünstig direkt in einem Konstruktor bereits umfangreichen Logikcode auszuführen? Java Basics - Anfänger-Themen 11
B mit drawString direkt zeichnen, aber wie das Ende finden? Java Basics - Anfänger-Themen 3
K Datentypen Globale Variable direkt initialisieren oder im Konstruktor? Java Basics - Anfänger-Themen 13
U Von DB in Formular direkt oder über Objekt? Java Basics - Anfänger-Themen 2
babel Datenbank Daten direkt an die Tabelle übergeben ohne Arrays Java Basics - Anfänger-Themen 9
D strings wie "{{5.0,3.0},{1.0,2.0}}" direkt als dou Java Basics - Anfänger-Themen 6
B ActionListener direkt NACH einem anderen ausführen Java Basics - Anfänger-Themen 4
T Checkbox in jtable: boolean wert direkt setzen - wie? Java Basics - Anfänger-Themen 1
J Array: Jedem Element direkt denselben Wert zuweisen Java Basics - Anfänger-Themen 6
G Jar nicht direkt ausführbar Java Basics - Anfänger-Themen 6
N Bilder direkt in Jar einbinden Java Basics - Anfänger-Themen 7
W Double Werte von eine txt Datei direkt einlesen Java Basics - Anfänger-Themen 4
N Tastatur direkt einlesen (ohne Enter) Java Basics - Anfänger-Themen 3
K Reguläre Ausdrücke - Gefundene Tokens direkt ermitteln Java Basics - Anfänger-Themen 3
G jar direkt ausführen Java Basics - Anfänger-Themen 4
S paint() direkt auf JFrame seit 1.5 nicht mehr möglich? Java Basics - Anfänger-Themen 5
G Ausführen und Eingabe direkt von der konsole Java Basics - Anfänger-Themen 6
R OutputStream direkt in StringBuffer schreiben lassen Java Basics - Anfänger-Themen 2
Dilandau button direkt in applet hängen (ohne panel) Java Basics - Anfänger-Themen 2
S Klassen dynamisch direkt aus Dateien einbinden Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben