brauch hilfe bei jtable, automatischer zellenwechsel
-
ich fluch hier grad über die API, vielleicht könnt ihr mir kurz helfen
ich hab ne tabelle mit header, namensspalte für parameter, wertespalte und ein paar checkboxen
jetzt möchte ich, dass er mir beim betätigen der entertaste den wert übernimmt und in die nächste werte-zelle springt ... desweiteren hab ich auch probleme mit dem highlighten
jetzt wollt ich das nicht über keyevents lösen sonder in der tabelle das voreinstellen, ich hab mal IRGENDWO geselsen dass das geht leider finde ich nicht mehr heraus wo ich da ansetzen muss ... traversal policy ?! kA
zum highlighting
in meiner customtable verwende ich nen renderer der von JTextEdit ableiten und TableCellRenderer implementiert
public class JTableTextFieldRenderer extends JTextField implements TableCellRenderer { Border Selected = null; Border notSelected = null; Border noFocus = null; /* (non-Javadoc) * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) */ @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (isSelected && !hasFocus) this.setBorder(getNoFocusBorder()); else if (isSelected) this.setBorder(getSelectedBorder()); else this.setBorder(getNotSelectedBorder()); this.setText(((Double)value).toString()); return this; } private Border getSelectedBorder() { if (Selected == null) { Selected = BorderFactory.createLineBorder(Color.BLACK,2); } return Selected; } private Border getNotSelectedBorder() { if (notSelected == null) notSelected = BorderFactory.createEmptyBorder(); return notSelected; } private Border getNoFocusBorder() { if (noFocus == null) noFocus = BorderFactory.createLineBorder(Color.GRAY, 1); return noFocus; } }
wen ich beim erstellen der tabelle aber
jTable.getColumnModel().setColumnSelectionAllowed(false);
jTable.setRowSelectionAllowed(false);mache, springt das highlighting(also die border(black, 2)) nicht an
EDIT achja, und wenn ich rowselect anlassen, geht er nach erreichen des ende nciht wieder nach oben an den anfang .... ich brauch eigentlich nur nen tipp welche klasse ich überschreiben muss oder wo ich in der API schauen kann, die hilfen dazu sind leider sehr dürftig
EDIT wenn wir schon dabei sind, wie schränk ich das multiselect ein manchmal sinds ganz klare methoden aber dafür scheints mal wieder keinen "einfachen" weg zu geben?
-
Update: also die renderer hab ich im griff, problem bereitet im moment nur, dass wenn cih TAB drücke oder Enter in der letzten zelle mit werten drinne, er zur nächsten spalte springt
vielleicht weis einer von euch wie ich das unterbinden kann, im internet find cih nur spärliche lösungen die meistens nur auf TAB abzielen und die taste quasi aushängen und neu verbinden ... aber ich muss doch das selektieren irgendwie überschreiben könne ... nur weis ich eben wieder nciht wo anfangen Q_Q