T
- セル内に含まれるアイテムの型。public class Cell<T> extends Labeled
ListView
、TreeView
、TableView
などの仮想コントロールに対して使用されます。セルは、Labeled
Control
であり、ListView、TreeViewまたはTableView内の単一行のレンダリングに使用されます。セルは、TableView内の個々のセル(つまり、各行/列交差)にも使用されます。詳細は、各コントロール個別のJavaDocを参照してください。
各セルは、(item
プロパティで表される)単一のデータ・アイテムに関連付けられています。セルは、そのアイテムのレンダリング、および該当する場合はアイテムの編集を行います。セル内のアイテムは、テキスト、その他のコントロール(CheckBox
、ChoiceBox
など)、その他のNode
(HBox
、GridPane
など)、またはRectangle
で表されます。
TreeView、ListView、TableView、および他のこのようなコントロールは、非常に大規模なデータの表示に使用される可能性があるため、コントロール内の単一アイテムごとに実際のセルを作成することは現実的ではありません。少数のセルのみを使用して、非常に大規模なデータ・セットを表します。各セルはリサイクル、つまり再利用されます。これは、コントロールの仮想化が何を意味しているかを示します。
セルはコントロールであるため、基本的にはモデルです。そのスキンは、外観とレイアウトの定義を管理し、一方、動作はすべての入力イベントの処理、およびその情報を使用したコントロールの状態変更を行います。また、他のコントロールと同様、セルはCSSからスタイル設定されます。ただし、ほとんどセルの用途では、スキンを実装する必要はありません。これは、セル・ファクトリを設定できるためであり、詳細は後述します。
最も一般的なセルのユースケースは、ユーザーへのテキストの表示であるため、このユースケースはセル内で特に最適化されています。これは、Labeled
から拡張されたセルで実行されます。これは、セルのサブクラスが、個別のLabel
を作成し、それをセル内で設定するのではなく、text
プロパティのみを設定する必要があることを意味します。ただし、単なるプレーン・テキストではないものが呼び出される状況では、任意のNode
をセルのgraphic
プロパティに配置できます。グラフィックは、その名前とは異なり、任意のノードになることができ、完全に対話型です。たとえば、ListCellは、そのグラフィックとしてButton
を使用して構成できます。その後、このボタン・テキストをセルのitem
プロパティにバインドできます。このようにして、セル内のアイテムが変更されると、ボタン・テキストは自動的に更新されます。
セルはfocusTraversableをfalseに設定します。
セル・ファクトリ
セルitem
のデフォルト表現は、レンダリングする様々な仮想化コンテナのスキンによって異なります。たとえば、ListViewはデフォルトでアイテムを文字列に変換し、この値を使用してLabeled.setText(java.lang.String)
を呼び出します。たとえば、ListViewに使用されるセルを特化する場合は、ListViewで定義されているcellFactory
コールバック関数の実装を指定する必要があります。同様のAPIが、セルを使用するほとんどのコントロール(TreeView
、TableView
、TableColumn
、ListView
など)に存在します。
セル・ファクトリは、プラットフォームが新しいセルを作成する必要があると判断すると、そのプラットフォームによって呼び出されます。たとえば、ListViewに1000万のアイテムがあるとします。1000万セルをすべて作成することは、負荷が非常に高いため、回避する必要があります。このため、かわりにListViewスキンを実装することで、視覚的なスペースに収まる十分なセルのみを作成できます。ListViewがサイズ変更されて大きくなると、システムは追加のセルを作成する必要があると判断します。この場合、cellFactoryコールバック関数(提供されている場合)を呼び出して、使用する必要があるセル実装を作成します。セル・ファクトリが提供されていない場合は、組込みのデフォルト実装が使用されます。
この場合、セル・ファクトリの実装は、セル・インスタンスの作成だけでなく、セルの状態の変化に対応したセルの構成も行います。たとえば、通貨型として表示されるように数値をフォーマットしたカスタム・セルを作成する場合は、次のようになります。
public class MoneyFormatCell extends ListCell<Number> { public MoneyFormatCell() { } @Override protected void updateItem(Number item, boolean empty) { // calling super here is very important - don't skip this! super.updateItem(item, empty); // format the number as if it were a monetary value using the // formatting relevant to the current locale. This would format // 43.68 as "$43.68", and -23.67 as "-$23.67" setText(item == null ? "" : NumberFormat.getCurrencyInstance().format(item)); // change the text fill based on whether it is positive (green) // or negative (red). If the cell is selected, the text will // always be white (so that it can be read against the blue // background), and if the value is zero, we'll make it black. if (item != null) { double value = item.doubleValue(); setTextFill(isSelected() ? Color.WHITE : value == 0 ? Color.BLACK : value < 0 ? Color.RED : Color.GREEN); } } }このクラスは、ListView内で次のように使用できます。
ObservableList<Number> money = ...; final ListView<Number> listView = new ListView<Number>(money); listView.setCellFactory(new Callback<ListView<Number>, ListCell<Number>>() { @Override public ListCell<Number> call(ListView<Number> list) { return new MoneyFormatCell(); } });この例では、呼び出されるとMoneyFormatCellのインスタンスを単に返す匿名内部クラスが作成されます。MoneyFormatCellクラスは
ListCell
を拡張し、updateItem
メソッドをオーバーライドします。このメソッドは、セル内のアイテムが変更されたり(ユーザーがListViewをスクロールした場合など)、基礎となるデータ・モデルのコンテンツが変更(およびListView内の異なるアイテムを表すためにセルが再利用)されると呼び出されます。このため、バインディングを管理する必要ありません。単に、このメソッドが発生したときに、アイテムの変更に対応します。前述の例では、アイテムが変更されると、常にセル・テキスト・プロパティが更新され、テキスト埋込みも変更されて、適切なビジュアルが得られるようにします。また、セルが空の場合(つまり、ListViewのスペースを埋めるために使用されるが、関連付けられているデータがない場合)、空の文字列を単に使用します。
関連する可能性のある、updateの接頭辞が付いた追加メソッドがあるため、セル、およびセルのサブクラスについてのAPIドキュメントをよく読んでください。
updateメソッドをオーバーライドするのではなく、バインディングAPIを使用することもできます。これを実現する方法の非常に簡単な例を次に示します。
public class BoundLabelCell extends ListCell<String> { public BoundLabelCell() { textProperty().bind(itemProperty()); } }
セルの色の変更
これは、JavaFXでは非常に単純になっています。各セルは、CSSから直接スタイル設定できます。このため、たとえば、ListView内の各セルのデフォルトの背景を白に変更する場合、次のCSSを実行できます。
.list-cell { -fx-padding: 3 3 3 3; -fx-background-color: white; }選択したListViewセルの色を青に設定する場合は、次の内容をCSSファイルに追加できます。
.list-cell:selected { -fx-background-color: blue; }ほとんどのセル実装は、Cellではなく
IndexedCell
から拡張されます。IndexedCellは、その他の2つの擬似クラス状態(oddおよびeven)を追加します。これを使用すると、CSSファイルで次のようなことを実行して、代替行ストライピングを取得できます。
.list-cell:odd { -fx-background-color: grey; }これらの各例では、コードを変更する必要がありません。CSSファイルを単に更新して、色を変えます。他のコントロールと同様、CSSファイルでhoverおよびその他の擬似クラスを使用することもできます。
前述の最初の例(数値のリストのフォーマット)に対する別のアプローチは、スタイル・クラスを使用することです。ListViewに表示する数値のObservableList
があり、負の値はすべて赤で、正の値または0値はすべて黒で表示するとします。これを実現する1つの方法は、値が負であるか正であるかに基づいて、CellのstyleClassを変更するカスタムcellFactoryを使用することです。このことは、セル内の数値が負であるかどうかをテストするコードを追加したり、negativeのstyleClassを追加することと同様に単純です。数値が負でない場合は、negative文字列を削除する必要があります。このアプローチによって、色をCSSで定義でき、カスタマイズを簡素化できます。この場合、CSSファイルには次のようなものが含まれます。
.list-cell { -fx-text-fill: black; } .list-cell .negative { -fx-text-fill: red; }
Cellアーキテクチャを使用するほとんどの仮想コントロール(ListView
、TreeView
、TableView
、TreeTableView
など)では、セルを介して値を直接編集する概念をサポートしています。コントロール固有の詳細は、前述にリンクされているコントロールのクラスのドキュメントの「編集」の項を参照してくださいこの項の残りの部分では、セルでの編集の詳細をいくつか説明します。
編集の一般的なフローは、次のとおりです(これらのステップでは、ListView
コントロールが例として使用されていますが、同様のAPIは前述のすべてのコントロールに存在し、通常、プロセスは完全に同じです)。
edit
メソッドなど)を呼び出して、セルが編集モードに入ることをリクエストします。注意: ユーザーがダブルクリックするか、適切なキーボード・コマンドを起動して編集を開始した場合は、実質的には、コントロールで適切な編集メソッドが呼び出されます(つまり、ユーザーが開始する編集と開発者が開始する編集のエントリ・メソッドは同じになります)。editing cell
が変更されたことが通知され、それがそのセル自体であるかどうかをチェックします。この時点で、次の3つのいずれかが発生する可能性があります。
startEdit()
が呼び出されます。いくつかの指針を次に示します。
startEdit()
メソッドをオーバーライドして、編集状態に入ったときにセルのビジュアルを更新することをお薦めします。ただし、startEdit()
メソッドをオーバーライドするサブクラスは、引き続きsuper.startEdit()
を呼び出すため、編集が成功するために必要な追加状態を親クラスが更新できることは非常に重要であることに注意してください。startEdit()
メソッド内で行うことが最適です。たとえば(この例は、ListView
などのUIコントロールのjavadocで、より具体的に示されています)、セルのLabeled.graphicProperty()
をTextField
に設定し、Labeled.textProperty()
をnullに設定します。これにより、エンド・ユーザーは、入力したり、データ・モデルに変更を加えることができます。commit
されるようにしたり、[Esc]キーで編集がcancel
されるようにするなど)処理します。これを実行するには、適切なイベント・リスナーを、編集状態中に表示するノードにアタッチします。editing state
である場合、cancelEdit()
がこのセルで呼び出されます。startEdit()
メソッドと同様、このメソッドをオーバーライドして、セルのビジュアルをクリーンアップし(また、ほとんどの場合Labeled.graphicProperty()
をnullに戻し)、Labeled.textProperty()
をその(新しい可能性がある)値に設定します。また、必ずsuper.cancelEdit()
を呼び出して、すべての状態が正しく更新されるようにしてください。isEditing()
編集状態でない場合、このセルでは何も発生しません。Type | プロパティと説明 |
---|---|
BooleanProperty |
editable
このセルを編集可能な状態にすることを許可するかどうかを表すプロパティ。
|
ReadOnlyBooleanProperty |
editing
このセルが現在編集状態であるかどうかを表すプロパティ。
|
ReadOnlyBooleanProperty |
empty
セルにコンテンツが含まれるかどうかを表すために使用されるプロパティ。
|
ObjectProperty<T> |
item
このCellに関連付けられているデータ値。
|
ReadOnlyBooleanProperty |
selected
このセルが選択されたかどうかを示します。
|
alignment、contentDisplay、ellipsisString、font、graphic、graphicTextGap、labelPadding、lineSpacing、mnemonicParsing、textAlignment、textFill、textOverrun、text、underline、wrapText
contextMenu、skin、tooltip
background、border、cacheShape、centerShape、height、insets、maxHeight、maxWidth、minHeight、minWidth、opaqueInsets、padding、prefHeight、prefWidth、scaleShape、shape、snapToPixel、width
needsLayout
accessibleHelp、accessibleRoleDescription、accessibleRole、accessibleText、blendMode、boundsInLocal、boundsInParent、cacheHint、cache、clip、cursor、depthTest、disabled、disable、effectiveNodeOrientation、effect、eventDispatcher、focused、focusTraversable、hover、id、inputMethodRequests、layoutBounds、layoutX、layoutY、localToParentTransform、localToSceneTransform、managed、mouseTransparent、nodeOrientation、onContextMenuRequested、onDragDetected、onDragDone、onDragDropped、onDragEntered、onDragExited、onDragOver、onInputMethodTextChanged、onKeyPressed、onKeyReleased、onKeyTyped、onMouseClicked、onMouseDragEntered、onMouseDragExited、onMouseDragged、onMouseDragOver、onMouseDragReleased、onMouseEntered、onMouseExited、onMouseMoved、onMousePressed、onMouseReleased、onRotate、onRotationFinished、onRotationStarted、onScrollFinished、onScroll、onScrollStarted、onSwipeDown、onSwipeLeft、onSwipeRight、onSwipeUp、onTouchMoved、onTouchPressed、onTouchReleased、onTouchStationary、onZoomFinished、onZoom、onZoomStarted、opacity、parent、pickOnBounds、pressed、rotate、rotationAxis、scaleX、scaleY、scaleZ、scene、style、translateX、translateY、translateZ、visible
USE_COMPUTED_SIZE、USE_PREF_SIZE
BASELINE_OFFSET_SAME_AS_HEIGHT
コンストラクタと説明 |
---|
Cell()
デフォルトのスタイル・クラスcellを持つデフォルトのセルを作成します。
|
修飾子と型 | メソッドと説明 |
---|---|
void |
cancelEdit()
この関数を呼び出して、ユーザーによる入力を保存せずに、編集状態から非編集状態に遷移します。
|
void |
commitEdit(T newValue)
この関数を(セル編集ユーザー・インタフェースのユーザー操作要件に基づく)適切な場合に呼び出して、次の2つのことを実行します: 適切なイベントをバッキングUIコントロールに戻す(たとえば、
|
BooleanProperty |
editableProperty()
このセルを編集可能な状態にすることを許可するかどうかを表すプロパティ。
|
ReadOnlyBooleanProperty |
editingProperty()
このセルが現在編集状態であるかどうかを表すプロパティ。
|
ReadOnlyBooleanProperty |
emptyProperty()
セルにコンテンツが含まれるかどうかを表すために使用されるプロパティ。
|
T |
getItem()
このセルに関連付けられているデータ値を返します。
|
boolean |
isEditable()
このセルを編集可能な状態にすることを許可するかどうかを返します。
|
boolean |
isEditing()
このセルが現在編集状態であるかどうかを表します。
|
boolean |
isEmpty()
セルが空であると思われるかどうかを表すブール値を返します。
|
protected boolean |
isItemChanged(T oldItem, T newItem)
このメソッドは、CPUの負荷が高い特定のアクション(具体的には
updateItem(Object, boolean) を呼び出すアクション)が必要なときにのみ実行されるように、Cellサブクラスによって呼び出されます(つまり、現在設定されているitem が設定を提案される新しいアイテムと異なるとみなされた場合にのみ実行されます)。 |
boolean |
isSelected()
このセルが現在選択されているかどうかを返します。
|
ObjectProperty<T> |
itemProperty()
このCellに関連付けられているデータ値。
|
ReadOnlyBooleanProperty |
selectedProperty()
このセルが選択されたかどうかを示します。
|
void |
setEditable(boolean value)
特定のセルを編集不可にすることができます。
|
void |
setItem(T value)
アイテムを指定された値に設定しますが、アイテムは仮想コントロールで管理されているため、直接呼び出すことはできません。
|
void |
startEdit()
この関数を呼び出して、セルが編集可能な場合に、非編集状態から編集状態に遷移します。
|
protected void |
updateItem(T item, boolean empty)
updateItemメソッドは、開発者にとって、呼び出すことはできないが、オーバーライドしてセルのビジュアルをカスタマイズできる、最適なメソッドです。
|
void |
updateSelected(boolean selected)
このセルが選択状態であるかどうかを更新します。
|
alignmentProperty、contentDisplayProperty、ellipsisStringProperty、fontProperty、getAlignment、getClassCssMetaData、getContentBias、getContentDisplay、getControlCssMetaData、getEllipsisString、getFont、getGraphic、getGraphicTextGap、getLabelPadding、getLineSpacing、getText、getTextAlignment、getTextFill、getTextOverrun、graphicProperty、graphicTextGapProperty、isMnemonicParsing、isUnderline、isWrapText、labelPaddingProperty、lineSpacingProperty、mnemonicParsingProperty、setAlignment、setContentDisplay、setEllipsisString、setFont、setGraphic、setGraphicTextGap、setLineSpacing、setMnemonicParsing、setText、setTextAlignment、setTextFill、setTextOverrun、setUnderline、setWrapText、textAlignmentProperty、textFillProperty、textOverrunProperty、textProperty、toString、underlineProperty、wrapTextProperty
computeMaxHeight、computeMaxWidth、computeMinHeight、computeMinWidth、computePrefHeight、computePrefWidth、contextMenuProperty、createDefaultSkin、executeAccessibleAction、getBaselineOffset、getContextMenu、getCssMetaData、getSkin、getTooltip、isResizable、layoutChildren、queryAccessibleAttribute、setContextMenu、setSkin、setTooltip、skinProperty、tooltipProperty
backgroundProperty、borderProperty、cacheShapeProperty、centerShapeProperty、getBackground、getBorder、getHeight、getInsets、getMaxHeight、getMaxWidth、getMinHeight、getMinWidth、getOpaqueInsets、getPadding、getPrefHeight、getPrefWidth、getShape、getUserAgentStylesheet、getWidth、heightProperty、insetsProperty、isCacheShape、isCenterShape、isScaleShape、isSnapToPixel、layoutInArea、layoutInArea、layoutInArea、layoutInArea、maxHeight、maxHeightProperty、maxWidth、maxWidthProperty、minHeight、minHeightProperty、minWidth、minWidthProperty、opaqueInsetsProperty、paddingProperty、positionInArea、positionInArea、prefHeight、prefHeightProperty、prefWidth、prefWidthProperty、resize、scaleShapeProperty、setBackground、setBorder、setCacheShape、setCenterShape、setHeight、setMaxHeight、setMaxSize、setMaxWidth、setMinHeight、setMinSize、setMinWidth、setOpaqueInsets、setPadding、setPrefHeight、setPrefSize、setPrefWidth、setScaleShape、setShape、setSnapToPixel、setWidth、shapeProperty、snappedBottomInset、snappedLeftInset、snappedRightInset、snappedTopInset、snapPosition、snapSize、snapSpace、snapToPixelProperty、widthProperty
getChildren、getChildrenUnmodifiable、getManagedChildren、getStylesheets、isNeedsLayout、layout、lookup、needsLayoutProperty、requestLayout、requestParentLayout、setNeedsLayout、updateBounds
accessibleHelpProperty、accessibleRoleDescriptionProperty、accessibleRoleProperty、accessibleTextProperty、addEventFilter、addEventHandler、applyCss、autosize、blendModeProperty、boundsInLocalProperty、boundsInParentProperty、buildEventDispatchChain、cacheHintProperty、cacheProperty、clipProperty、computeAreaInScreen、contains、contains、cursorProperty、depthTestProperty、disabledProperty、disableProperty、effectiveNodeOrientationProperty、effectProperty、eventDispatcherProperty、fireEvent、focusedProperty、focusTraversableProperty、getAccessibleHelp、getAccessibleRole、getAccessibleRoleDescription、getAccessibleText、getBlendMode、getBoundsInLocal、getBoundsInParent、getCacheHint、getClip、getCursor、getDepthTest、getEffect、getEffectiveNodeOrientation、getEventDispatcher、getId、getInputMethodRequests、getLayoutBounds、getLayoutX、getLayoutY、getLocalToParentTransform、getLocalToSceneTransform、getNodeOrientation、getOnContextMenuRequested、getOnDragDetected、getOnDragDone、getOnDragDropped、getOnDragEntered、getOnDragExited、getOnDragOver、getOnInputMethodTextChanged、getOnKeyPressed、getOnKeyReleased、getOnKeyTyped、getOnMouseClicked、getOnMouseDragEntered、getOnMouseDragExited、getOnMouseDragged、getOnMouseDragOver、getOnMouseDragReleased、getOnMouseEntered、getOnMouseExited、getOnMouseMoved、getOnMousePressed、getOnMouseReleased、getOnRotate、getOnRotationFinished、getOnRotationStarted、getOnScroll、getOnScrollFinished、getOnScrollStarted、getOnSwipeDown、getOnSwipeLeft、getOnSwipeRight、getOnSwipeUp、getOnTouchMoved、getOnTouchPressed、getOnTouchReleased、getOnTouchStationary、getOnZoom、getOnZoomFinished、getOnZoomStarted、getOpacity、getParent、getProperties、getPseudoClassStates、getRotate、getRotationAxis、getScaleX、getScaleY、getScaleZ、getScene、getStyle、getStyleableParent、getStyleClass、getTransforms、getTranslateX、getTranslateY、getTranslateZ、getTypeSelector、getUserData、hasProperties、hoverProperty、idProperty、inputMethodRequestsProperty、intersects、intersects、isCache、isDisable、isDisabled、isFocused、isFocusTraversable、isHover、isManaged、isMouseTransparent、isPickOnBounds、isPressed、isVisible、layoutBoundsProperty、layoutXProperty、layoutYProperty、localToParent、localToParent、localToParent、localToParent、localToParent、localToParentTransformProperty、localToScene、localToScene、localToScene、localToScene、localToScene、localToScene、localToScene、localToScene、localToScene、localToScene、localToSceneTransformProperty、localToScreen、localToScreen、localToScreen、localToScreen、localToScreen、lookupAll、managedProperty、mouseTransparentProperty、nodeOrientationProperty、notifyAccessibleAttributeChanged、onContextMenuRequestedProperty、onDragDetectedProperty、onDragDoneProperty、onDragDroppedProperty、onDragEnteredProperty、onDragExitedProperty、onDragOverProperty、onInputMethodTextChangedProperty、onKeyPressedProperty、onKeyReleasedProperty、onKeyTypedProperty、onMouseClickedProperty、onMouseDragEnteredProperty、onMouseDragExitedProperty、onMouseDraggedProperty、onMouseDragOverProperty、onMouseDragReleasedProperty、onMouseEnteredProperty、onMouseExitedProperty、onMouseMovedProperty、onMousePressedProperty、onMouseReleasedProperty、onRotateProperty、onRotationFinishedProperty、onRotationStartedProperty、onScrollFinishedProperty、onScrollProperty、onScrollStartedProperty、onSwipeDownProperty、onSwipeLeftProperty、onSwipeRightProperty、onSwipeUpProperty、onTouchMovedProperty、onTouchPressedProperty、onTouchReleasedProperty、onTouchStationaryProperty、onZoomFinishedProperty、onZoomProperty、onZoomStartedProperty、opacityProperty、parentProperty、parentToLocal、parentToLocal、parentToLocal、parentToLocal、parentToLocal、pickOnBoundsProperty、pressedProperty、pseudoClassStateChanged、relocate、removeEventFilter、removeEventHandler、requestFocus、resizeRelocate、rotateProperty、rotationAxisProperty、scaleXProperty、scaleYProperty、scaleZProperty、sceneProperty、sceneToLocal、sceneToLocal、sceneToLocal、sceneToLocal、sceneToLocal、sceneToLocal、sceneToLocal、sceneToLocal、screenToLocal、screenToLocal、screenToLocal、setAccessibleHelp、setAccessibleRole、setAccessibleRoleDescription、setAccessibleText、setBlendMode、setCache、setCacheHint、setClip、setCursor、setDepthTest、setDisable、setDisabled、setEffect、setEventDispatcher、setEventHandler、setFocused、setFocusTraversable、setHover、setId、setInputMethodRequests、setLayoutX、setLayoutY、setManaged、setMouseTransparent、setNodeOrientation、setOnContextMenuRequested、setOnDragDetected、setOnDragDone、setOnDragDropped、setOnDragEntered、setOnDragExited、setOnDragOver、setOnInputMethodTextChanged、setOnKeyPressed、setOnKeyReleased、setOnKeyTyped、setOnMouseClicked、setOnMouseDragEntered、setOnMouseDragExited、setOnMouseDragged、setOnMouseDragOver、setOnMouseDragReleased、setOnMouseEntered、setOnMouseExited、setOnMouseMoved、setOnMousePressed、setOnMouseReleased、setOnRotate、setOnRotationFinished、setOnRotationStarted、setOnScroll、setOnScrollFinished、setOnScrollStarted、setOnSwipeDown、setOnSwipeLeft、setOnSwipeRight、setOnSwipeUp、setOnTouchMoved、setOnTouchPressed、setOnTouchReleased、setOnTouchStationary、setOnZoom、setOnZoomFinished、setOnZoomStarted、setOpacity、setPickOnBounds、setPressed、setRotate、setRotationAxis、setScaleX、setScaleY、setScaleZ、setStyle、setTranslateX、setTranslateY、setTranslateZ、setUserData、setVisible、snapshot、snapshot、startDragAndDrop、startFullDrag、styleProperty、toBack、toFront、translateXProperty、translateYProperty、translateZProperty、usesMirroring、visibleProperty
public final ObjectProperty<T> itemProperty
この値は、Cellクラスで適切に動作する方法を認識している仮想ユーザー・インタフェース・コントロールによって、Cellのサブクラスでのみ設定される必要があります。
public final ReadOnlyBooleanProperty emptyProperty
セルが空の場合、空のCSS擬似クラス状態を介して異なるスタイルを設定できます。たとえば、代替行のハイライトを受け取らないようにしたり、カーソルを重ねたときにhoverの背景塗りつぶしを受け取らないようにできます。
isEmpty()
public final ReadOnlyBooleanProperty selectedProperty
isSelected()
public final ReadOnlyBooleanProperty editingProperty
isEditing()
public final BooleanProperty editableProperty
editable
プロパティもtrueである必要があります。public final ObjectProperty<T> itemProperty()
この値は、Cellクラスで適切に動作する方法を認識している仮想ユーザー・インタフェース・コントロールによって、Cellのサブクラスでのみ設定される必要があります。
public final void setItem(T value)
public final T getItem()
public final ReadOnlyBooleanProperty emptyProperty()
セルが空の場合、空のCSS擬似クラス状態を介して異なるスタイルを設定できます。たとえば、代替行のハイライトを受け取らないようにしたり、カーソルを重ねたときにhoverの背景塗りつぶしを受け取らないようにできます。
isEmpty()
public final boolean isEmpty()
public final ReadOnlyBooleanProperty selectedProperty()
isSelected()
public final boolean isSelected()
public final boolean isEditing()
public final ReadOnlyBooleanProperty editingProperty()
isEditing()
public final void setEditable(boolean value)
value
- セルが編集可能であるかどうかを表すブール値。trueの場合、セルは編集可能で、falseの場合、セルは編集できません。public final boolean isEditable()
public final BooleanProperty editableProperty()
editable
プロパティもtrueである必要があります。public void startEdit()
public void cancelEdit()
public void commitEdit(T newValue)
ListView
など)に戻します。これにより、この編集をプッシュして関連データ・ソースやプロパティに戻すプロセスが開始されます(ただし、正常終了は保証されません。つまり、使用される特定の編集コミット・ハンドラに依存します)。詳細は、UIコントロール・クラスのjavadocを参照してください。一般的に、カスタム・セル実装でこのメソッドをオーバーライドする必要はありません。必要に応じてこのメソッドを呼び出すのみで十分です(たとえば、ユーザーが[Enter]キーを押したときにcell.commitEdit(converter.fromString(textField.getText()));
などを実行できます)。
newValue
- エンド・ユーザーが入力した値であり、ユーザー・インタフェースを支援するデータ・ソース、およびUIコントロールのインストール編集コミット・ハンドラで指定された関連する方法で保持される必要があります。protected void updateItem(T item, boolean empty)
ListView
コントロールなどのUIコントロールによってのみ呼び出されるようにする必要があります。ただし、updateItemメソッドが存在する理由は、開発者がカスタム・セル・ファクトリ(ListView cell factory
など)を指定するときに、updateItemメソッドをオーバーライドして、セルを完全にカスタマイズできるようにすることです。
CellのサブクラスがupdateItemメソッドを適切にオーバーライドすることは非常に重要であり、これは、そのようにしないと、セルが空白になったり、セルに予期しないコンテンツが含まれるなどの問題が発生するためです。updateItemメソッドを適切にオーバーライドする方法の例を次に示します。
protected void updateItem(T item, boolean empty) { super.updateItem(item, empty); if (empty || item == null) { setText(null); setGraphic(null); } else { setText(item.toString()); } }
このコード・サンプルには次の2つの重要なポイントがあることに注意してください。
empty
状態をテストし、trueの場合は、textプロパティとgraphicプロパティをnullに設定します。これを行わないと、ほぼ確実に、エンド・ユーザーに対して予想外のグラフィカル・アーティファクトがセル内に表示されます。item
- セルの新しいアイテム。empty
- このセルがリストからのデータを表しているかどうか。空の場合、いずれのドメイン・データも表しませんが、空の行のレンダリングに使用されるセルとなります。public void updateSelected(boolean selected)
selected
- このセルが選択されているかどうか。protected boolean isItemChanged(T oldItem, T newItem)
updateItem(Object, boolean)
を呼び出すアクション)が必要なときにのみ実行されるように、Cellサブクラスによって呼び出されます(つまり、現在設定されているitem
が設定を提案される新しいアイテムと異なるとみなされた場合にのみ実行されます)。
このメソッドのデフォルト実装では等価性のテストが行われますが、開発者はドメインに固有の他の方法でチェックを実行するようにこのメソッドをオーバーライドできます。
oldItem
- セルに含まれる、現在設定されているアイテム(getItem()
を介して使用可能なアイテムと同じ)。newItem
- このメソッドがtrueを返す場合にセル内に設定されるアイテム。このメソッドがfalseを返す場合、これは設定されないことがあります。Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.