2017-12-19 19 views
0

テーブル(Java 8)で使用するための独自のSpinnerCellEditorをビルドします。テクニカルスピナーは正しく動作しますが、スピナーのフォントは小さすぎるため、読むことができません。誰もがこの問題を解決する方法を持っていますか?テーブルのスピナーテキストが小さすぎる

エディタ

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

ように見える

TableColumnModel aBookRatingModel = tab_Rat_Rating.getColumnModel(); 

aBookRatingModel.getColumn(2).setCellEditor (new BSSpinnerCellEditor()); 

テーブルへの結合

私はComboboxセルエディタで同じ問題がありました。 border属性をnullに設定して解決しました。しかし、これはここでは機能しません。私は解決策または類似の問題を探したが、何も見つかりませんでした。

私は情報やヒントを求められます。

よろしく イェルク

+0

2つのこと - まず、私たちはあなたが現在これを実装しようとしているかを確認することができますので、あなたはいくつかのコードを投稿してくださいすることができます。第二に、これまでに何を試しましたか? –

+0

こんにちはフランシス。ご協力いただきありがとうございます。私は私の追加情報が大丈夫です願っています。 – Crypticone

答えて

0

問題は、唯一の方法は、行の高さを大きくすること、であるように、スピナーは、行の高さよりも大きいこと、です。 スピナーの高さはルック・アンド・フィールに依存するので、最初のテーブルの前に初期化され、次にテーブルの正しい行の高さを設定するスピナーの推奨サイズで設定される変数を使用します。私は、スピナーがテーブルの前に初期化されているため、これが機能することが分かります。しかし、私はこれを解決するための他の解決策を見つけませんでした。 これが他の人にも役立つことを願っています。

敬具 イェルク

関連する問題