PasswortField in JTable

flou

Mitglied
Hallo,

ich bräuchte Spalten in dem ich passwörte speichern kann. Das ganze soll
auch schön mit echoChar '*' geschehen usw...
Brauch ich dafür einen CellRenderer und einen CellEditor oder reicht hier
der CellRenderer?
Wie muss diese/r ungefähr ausssehen?

gruss flo
 
flou hat gesagt.:
Hallo,
ich bräuchte Spalten in dem ich passwörte speichern kann. Das ganze soll
auch schön mit echoChar '*' geschehen usw...
Brauch ich dafür einen CellRenderer und einen CellEditor oder reicht hier
der CellRenderer?
Wie muss diese/r ungefähr ausssehen?

gruss flo

Tach,
was bedeuten wohl Renderer und Editor? Es muss übrigens nicht immer gleich ein eigener Renderer geschrieben werden. Meist reicht eine "normale" Objektrückgabe beim getValueAt im TableModel.
 
Hallo!

Schau mal hier:
Code:
/**
 * 
 */
package de.tutorials;

import java.awt.Component;

import javax.swing.JFrame;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;

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

	private JTable table;

	private Object[] columnNames = { "Benutzername", "Kennwort" };

	private Object[][] rowData = { { "Tom", "mot" }, { "Dari", "irad" } };

	public PasswordTableExample() {
		super("PasswordTableExample");
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		DefaultTableModel model = new DefaultTableModel(rowData, columnNames) {

			public boolean isCellEditable(int row, int column) {
				if (column == 1) // Passwöter sollen nicht Editiert werden
					// können!
					return false;
				return super.isCellEditable(row, column);
			}

		};

		table = new JTable(model);
		table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
			private JPasswordField passwordField = new JPasswordField();

			public Component getTableCellRendererComponent(JTable table,
					Object value, boolean isSelected, boolean hasFocus,
					int row, int column) {
				if (column == 1) {
					passwordField.setText((String) value);
					return passwordField;
				} else {
					return super.getTableCellRendererComponent(table, value,
							isSelected, hasFocus, row, column);
				}
			}
		});

		add(new JScrollPane(table));
		pack();
		setVisible(true);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new PasswordTableExample();
	}
}

Gruß Tom
 
Zurück