2016-03-28 5 views
0

選択した項目のoverrun styleを設定する必要があります。オーバーランスタイルを設定するには、わかっている限りbuttonCellObjectProperty[javafx.scene.control.ListCell[T]]のタイプ)にアクセスする必要があります。ScalaFX/JavaFX:どのようにしてコンボボックスのオーバーランスタイルを変更できますか?

は、そこで私はbuttonCellメンバーが持っている値を参照するために

val fileComboBox = new ComboBox[java.io.File](Seq()) 
println(fileComboBox.buttonCell) 

を書きました。

結果:[SFX]ObjectProperty [bean: [email protected][styleClass=combo-box-base combo-box], name: buttonCell, value: null]つまり、設定できるオーバーランスタイルのボタンセルがありません(value: null)。

コンボボックスのオーバーランスタイルを変更するにはどうすればよいですか?

+0

私はコンボボックスにこれを設定することができるだろうと思っていないでしょう。ユーザーからの行ごとの選択が必要なコントロールでは意味がありません。あなたは最小/最大/優先幅を設定することができます。 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/Region.html#setMinWidth-double- – ManoDestra

+0

選択された値は、ウィンドウの幅より長くなるファイルへのパスです(特に、ウィンドウのサイズを小さくした場合)。パスのどの部分がより重要か:頭か尾か? – ideaboxer

+0

ファイル名だけをコンボボックスディスプレイに保存することはできますが、フルパスをその値に保存できますか?ファイル名が一意であれば、もちろんです。 – ManoDestra

答えて

2

あなたは、外部CSSファイルでこれを行うことができます。

.combo-box > .list-cell { 
    -fx-text-overrun: leading-ellipsis ; 
} 

有効な値はellipsisがデフォルトであることを[ center-ellipsis | center-word-ellipsis | clip | ellipsis | leading-ellipsis | leading-word-ellipsis | word-ellipsis ]です。

ボタンセルを直接設定することによってもこれを行うことができます。 JavaFXのでは(私はあなたがスカラ座にそれを翻訳するために残しておきます):

ListCell<File> buttonCell = new ListCell<File>() { 
    @Override 
    protected void updateItem(File item, boolean empty) { 
     super.updateItem(item, empty); 
     setText(empty ? null : item.getName()); 
    } 
}; 
buttonCell.setTextOverrun(OverrunStyle.LEADING_ELLIPSIS); 
fileComboBox.setButtonCell(buttonCell); 
+0

私はちょうどCSS設定を試しました(これは私が本当に好きです、それを指してくれてありがとう!)、それは動作します:-) – ideaboxer

関連する問題