2017-12-19 15 views
0

내 테이블 (Java 8)에서 사용하기 위해 자체 SpinnerCellEditor를 빌드합니다. 기술적 인 스피너가 올바로 작동하지만 회 전자의 글꼴이 너무 작아서 읽을 수 없습니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?테이블의 회 전자 텍스트가 너무 작습니다.

이 테이블

TableColumnModel aBookRatingModel = tab_Rat_Rating.getColumnModel(); 

aBookRatingModel.getColumn(2).setCellEditor (new BSSpinnerCellEditor()); 
결합 편집기

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); 
    inputField.setBorder (null); 
} // EOConstructor 

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); 
    inputField.setBorder (null); 
} 

public BSSpinnerCellEditor (SpinnerModel aModel) { 
    inputField = new JSpinner (aModel); 
    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; 
} 

} 구현

결과는 보인다

Result

추천

나는 Combobox 셀 편집기에서 같은 문제가 있었다. border 속성을 null로 설정하여이를 해결했습니다. 그러나 이것은 여기서 작동하지 않습니다. 나는 해결책이나 비슷한 문제를 찾았지만 아무 것도 발견하지 못했다.

정보 나 팁이 있어야합니다.

안부 인 Joerg

+0

두 가지 - 첫째, 그래서 우리는 현재이 구현하는 방법을 볼 수있는 몇 가지 코드를 게시하시기 바랍니다 수 있습니다. 둘째, 지금까지 무엇을 시도 했습니까? –

+0

안녕 Francis. 당신의 도움을 주셔서 감사합니다. 나는 나의 추가 된 정보가 좋다는 것을 희망한다. – Crypticone

답변

0

문제가있는 유일한 방법은되도록 스피너, 행 높이보다 큰 것이되고, 행 높이를 확대됩니다. 회 전자의 높이는 모양과 느낌에 따라 다르므로 회 전자의 기본 크기로 설정되는 변수를 사용합니다.이 변수는 첫 번째 테이블보다 먼저 초기화 된 다음 테이블의 정확한 행 높이를 설정합니다. 스피너가 테이블보다 먼저 초기화되기 때문에 이것이 작동한다는 것을 알고 있습니다. 그러나 나는 이것을 해결할 다른 해결책을 찾지 못했습니다. 다른 사람들에게도 도움이되기를 바랍니다.

안부 인 Joerg