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


Log in to reply