TableCellEditor (Java API): Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K
 
K
 
(7 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Ein ''TableCellEditor'' wird von einer [[JTable_(Java_API)|JTable]] benutzt, um dem Benutzer die Möglichkeit zu bieten, einzelne Zellen der Tabelle zu bearbeiten. Die ''JTable'' geht dabei immer gleich vor: zuerst wird die [[Methode_(Java)|Methode]] ''getTableCellEditor'' aufgerufen. Diese Methode gibt eine [[Component_(Java_API)|Component]] zurück, welche auf der ''JTable'' angezeigt wird. Der Benutzer kann diesen Editor solange verwenden, bis der ''TableCellEditor'' oder die ''JTable'' die Methode ''stopCellEditing'' oder ''cancelCellEditing'' aufruft. Diese Methoden feuern ein Event in die registrierten [[CellEditorListener_(Java_API)|CellEditorListener]], müssen aber weiter nichts tun.
+
Ein '''{{JAPI|TableCellEditor}}''' wird von einer [[JTable_(Java_API)|JTable]] benutzt, um dem Benutzer die Möglichkeit zu bieten, einzelne Zellen der Tabelle zu bearbeiten. Die ''JTable'' geht dabei immer gleich vor: zuerst wird die [[Methode_(Java)|Methode]] ''getTableCellEditor'' aufgerufen. Diese Methode gibt eine [[Component_(Java_API)|Component]] zurück, welche auf der ''JTable'' angezeigt wird. Der Benutzer kann diesen Editor solange verwenden, bis der ''TableCellEditor'' oder die ''JTable'' die Methode ''stopCellEditing'' oder ''cancelCellEditing'' aufruft. Diese Methoden feuern ein Event in die registrierten [[CellEditorListener_(Java_API)|CellEditorListener]], müssen aber weiter nichts tun.
 
Wurde das Stop-Event gefeuert, so wird der Editor nach seinem aktuellen Wert befragt (über die Methode ''getCellEditorValue''), und dieser Wert wird in das [[TableModel_(Java_API)|TableModel]] geschrieben. Wurde hingegen das Cancel-Event gefeuert, wird die Aktion einfach abgebrochen, und die Veränderungen verworfen.
 
Wurde das Stop-Event gefeuert, so wird der Editor nach seinem aktuellen Wert befragt (über die Methode ''getCellEditorValue''), und dieser Wert wird in das [[TableModel_(Java_API)|TableModel]] geschrieben. Wurde hingegen das Cancel-Event gefeuert, wird die Aktion einfach abgebrochen, und die Veränderungen verworfen.
  
 
Ein einfacher ''TableCellEditor'' könnte folgendermassen aussehen:
 
Ein einfacher ''TableCellEditor'' könnte folgendermassen aussehen:
<code=java>import java.awt.Component;
+
<syntaxhighlight lang="java">import java.awt.Component;
 
import java.util.ArrayList;
 
import java.util.ArrayList;
 
import java.util.EventObject;
 
import java.util.EventObject;
Zeile 75: Zeile 75:
 
return true;
 
return true;
 
}
 
}
}</code=java>
+
}</syntaxhighlight>
 +
 
 +
{{Fragen stellen}}
 +
 
 +
=Weiterführende Artikel=
 +
*[[JTable (Java API) | JTable]]
 +
*[[TableModel (Java API) | TableModel]]
 +
*[[JTableHeader_(Java_API) | JTableHeader]]
 +
*[[TableColumnModel_(Java_API) | TableColumnModel]]
 +
*[[TableCellRenderer_(Java_API)| TableCellRenderer]]
 +
*[[TableColumn_(Java_API)|TableColumn]]
 +
*[[RowSorter_(Java_API)|RowSorter]]
 +
 
 +
*[[JTable (Tutorial) | JTable-Tutorial©]]
 +
 
 +
=Links=
 +
*[http://docs.oracle.com/javase/tutorial/uiswing/components/table.html Oracle Tutorial - How to Use Tables]
  
 
[[Kategorie:Java_API]]
 
[[Kategorie:Java_API]]
 +
[[Kategorie:Swing]]
 +
[[Kategorie:JTable]]

Aktuelle Version vom 28. Mai 2019, 13:28 Uhr

Ein TableCellEditor wird von einer JTable benutzt, um dem Benutzer die Möglichkeit zu bieten, einzelne Zellen der Tabelle zu bearbeiten. Die JTable geht dabei immer gleich vor: zuerst wird die Methode getTableCellEditor aufgerufen. Diese Methode gibt eine Component zurück, welche auf der JTable angezeigt wird. Der Benutzer kann diesen Editor solange verwenden, bis der TableCellEditor oder die JTable die Methode stopCellEditing oder cancelCellEditing aufruft. Diese Methoden feuern ein Event in die registrierten CellEditorListener, müssen aber weiter nichts tun. Wurde das Stop-Event gefeuert, so wird der Editor nach seinem aktuellen Wert befragt (über die Methode getCellEditorValue), und dieser Wert wird in das TableModel geschrieben. Wurde hingegen das Cancel-Event gefeuert, wird die Aktion einfach abgebrochen, und die Veränderungen verworfen.

Ein einfacher TableCellEditor könnte folgendermassen aussehen:

import java.awt.Component;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.List;

import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.table.TableCellEditor;

/**
 * Ein einfacher TableCellEditor der ein String in einem
 * Textfeld darstellt.
 */
public class DemoEditor implements TableCellEditor{
	/** das Textfeld des Editors */
	private JTextField textField = new JTextField();
	/** Observer des Editors */
	private List<CellEditorListener> listeners = new ArrayList<CellEditorListener>();
	
	// Prepariert den Editor, so dass ein neuer Wert angezeigt wird.
	public Component getTableCellEditorComponent( 
			JTable table, Object value, boolean isSelected, int row, int column ){

		textField.setText( String.valueOf( value ) );
		return textField;
	}

	public void addCellEditorListener( CellEditorListener l ){
		listeners.add( l );
	}

	public void removeCellEditorListener( CellEditorListener l ){
		listeners.remove( l );
	}

	// Gibt den aktuellen Wert des Editors zurück.
	public Object getCellEditorValue(){
		return textField.getText();
	}

	public boolean isCellEditable( EventObject anEvent ){
		return true;
	}

	public boolean shouldSelectCell( EventObject anEvent ){
		return true;
	}

	// Informiert alle Observer, dass die Aktion abgebrochen wurde.
	public void cancelCellEditing(){
		ChangeEvent event = new ChangeEvent( this );
		for( CellEditorListener listener : 
			listeners.toArray( new CellEditorListener[ listeners.size() ] )){
		
			listener.editingCanceled( event );
		}
	}

	// Informiert alle Observer, dass der Wert gespeichert werden soll.
	public boolean stopCellEditing(){
		ChangeEvent event = new ChangeEvent( this );
		for( CellEditorListener listener : 
			listeners.toArray( new CellEditorListener[ listeners.size() ] )){
			
			listener.editingStopped( event );
		}
		
		// informiert den Aufrufer, dass der Input korrekt ist.
		return true;
	}
}


Fragen

Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!

Wir helfen dir gerne!


Dir hat dieser Artikel gefallen? Oder Du hast Fehler entdeckt und möchtest zur Berichtigung beitragen? Prima! Schreibe einen Kommentar!

Du musst angemeldet sein, um einen Kommentar abzugeben.


Weiterführende Artikel

Links