Hallo zusammen,
ich habe mir einen Spinner als Editor für einen Table gebaut. Technisch funktioniert auch alles korrekt. Allerdings ist die Anzeige so klein, dass der Inhalt im Spinner nicht lesbar ist. Ich habe das gleiche Problem bei meiner Implementierung einer Combobox als TableCellEditor gehabt. Dort konnte ich das Problem durch Abschalten der Border (setBorder (null)) beheben. Hier funktioniert das allerdings nicht. Bei meiner Suche im Netz bin ich bislang auch noch nicht fündig geworden. Implementiert ist das unter Java 8, PC mit netbeans.
Die Implementierung des Editors sieht folgendermaßen aus:
Die Einbindung in den Table erfolgt dann mittels:
Als Ergebnis erhalte ich dann die folgende Anzeige:
Hart jemand eine Idee wie das korrigiert werden kann? Ich bin für jeden Tipp dankbar.
Viele Grüße und Dank im Voraus.
Jörg
ich habe mir einen Spinner als Editor für einen Table gebaut. Technisch funktioniert auch alles korrekt. Allerdings ist die Anzeige so klein, dass der Inhalt im Spinner nicht lesbar ist. Ich habe das gleiche Problem bei meiner Implementierung einer Combobox als TableCellEditor gehabt. Dort konnte ich das Problem durch Abschalten der Border (setBorder (null)) beheben. Hier funktioniert das allerdings nicht. Bei meiner Suche im Netz bin ich bislang auch noch nicht fündig geworden. Implementiert ist das unter Java 8, PC mit netbeans.
Die Implementierung des Editors sieht folgendermaßen aus:
Java:
public class BSSpinnerCellEditor extends AbstractCellEditor implements TableCellEditor {
private JSpinner inputField;
private final static double min = 0.0;
private final static double max = 5.0;
private final static double step = 0.5;
public BSSpinnerCellEditor () {
inputField = new JSpinner (new SpinnerNumberModel (0.0, min, max, step));
inputField.setOpaque (true);// must be set, otherwise BackgroundColor will NOT be shown
inputField.setBorder (null);
}
public BSSpinnerCellEditor (float actValue) {
if (actValue < 0.0f || actValue > 5.0f)
actValue = 0.0f;
inputField = new JSpinner (new SpinnerNumberModel ((double) actValue, min, max, step));
inputField.setOpaque (true);// must be set, otherwise BackgroundColor will NOT be shown
inputField.setBorder (null);
}
public BSSpinnerCellEditor (SpinnerModel aModel) {
inputField = new JSpinner (aModel);
inputField.setOpaque (true);// must be set, otherwise BackgroundColor will NOT be shown
inputField.setBorder (null);
}
public Component getTableCellEditorComponent (JTable table,
Object value, boolean isSelected,
int row, int column) {
TableModel aModel = table.getModel ();
if (aModel != null && aModel instanceof BookRatingCriterionTableModel) {
BookRatingCriterionTableModel tModel = (BookRatingCriterionTableModel) aModel;
RatingCriterion aCriterion = tModel.getRatingCriterionAt (table.convertRowIndexToModel (row));
inputField.setValue (aCriterion.getRating ());
} // EOIf
return inputField;
}
public Object getCellEditorValue () {
float retVal = ((Double) inputField.getValue ()).floatValue ();
if (retVal < min) {
inputField.setValue (min);
retVal = ((Double) min).floatValue ();
}
else {
if (retVal > max) {
inputField.setValue (max);
retVal = ((Double) max).floatValue ();
}
}
return retVal;
}
}
Die Einbindung in den Table erfolgt dann mittels:
Code:
TableColumnModel aBookRatingModel = tab_Rat_Rating.getColumnModel ();
aBookRatingModel.getColumn(2).setCellEditor (new BSSpinnerCellEditor ());
Als Ergebnis erhalte ich dann die folgende Anzeige:
Hart jemand eine Idee wie das korrigiert werden kann? Ich bin für jeden Tipp dankbar.
Viele Grüße und Dank im Voraus.
Jörg
Zuletzt bearbeitet: