パッケージjavafx.scene.control
JavaFXユーザー・インタフェース・コントロール(UIコントロールまたは単純なコントロール)は、特に多くの異なるアプリケーション・コンテキストでの再利用に適しているJavaFXシーングラフの特化されたノードです。 これらは、設計者および開発者が視覚的に高度なカスタマイズを実行できるように設計されています。 また、レイアウト・システムで正しく機能するように設計されています。 たとえば、よく知られているコントロールとして、Button
、Label
、ListView
、TextField
などがあります。
コントロールはシーングラフ内のNodes
であるため、Groups
、Images
、Media
、Text
およびbasic geometric shapes
と自由に混在させることができます。 新しいUIコントロールを記述することは容易ではありませんが、それを使用し、スタイルを設定することは、特に既存のWeb開発者にとっては、非常に容易です。
このドキュメントの残りの部分では、JavaFX UIコントロール・ライブラリの基本的なアーキテクチャ、既存のコントロールのスタイルを設定する方法、カスタム・スキンを作成する方法、およびコントロールを使用してより複雑なユーザー・インタフェースを構築する方法について説明します。
アーキテクチャ
コントロールは、従来のMVC設計パターンに従っています。 Control
はモデルです。 状態とその状態を操作する関数の両方が含まれています。 Controlクラス自体は、レンダリングの方法やユーザー操作の内容を認識しません。 これらのタスクはSkin
("view")に委任され、ビューとコントローラの機能が内部的に別のクラスに分離されますが、現時点ではコントローラの側面のためのパブリックAPIはありません。
すべてのコントロールはControlクラスから拡張され、このクラスはParent
ノードであり、これはNode
です。 どのコントロールにも、コントロールのビューの実装である単一のスキンへの参照があります。 コントロールは、コントロールの最小サイズ、最大サイズおよび優先サイズ、ベースライン・オフセットおよびヒット・テスト(包含および交差)を計算する責任をスキンに委任します。 また、コントロールにフォーカスがあるときにそのコントロールで発生するすべての関連キー・イベントを実装して対応することも、スキンで行うか、またはスキンが委任します。
Control
コントロールはParent
から拡張されるため、リーフ・ノードではありません。 開発者または設計者の視点では、コントロールは多くの場合リーフ・ノードであるかのように考えることができます。 たとえば、開発者または設計者は、ButtonをRectangleやその他の簡単なリーフ・ノードであるかのように考えることができます。
コントロールは、サイズ変更可能であるため、各シーングラフ・パルスでサイズが優先サイズに自動的に設定されます。 コントロールの幅および高さを設定しても、優先サイズには影響を与えません。 レイアウト・コンテナで使用すると、コントロールに適用される(またはコントロールに手動で指定された)レイアウト制約によって、配置とサイズ設定の方法が決まります。
コントロールのスキンはいつでも変更できます。 その場合、コントロールにはレイアウトが必要であることを示すマークが付きます。これは、スキンを変更すると、コントロールの優先サイズが変化する場合があるためです。 コントロールを作成する時点でスキンを指定しないと、すべての組込みコントロールに対して、デフォルトのCSSベースのスキンが提供されます。
各コントロールには、オプションでツールチップが指定される場合があります。 ツールチップは、一定の時間マウスでコントロールをポイントすると、コントロールに関する情報(通常はテキスト)をユーザーに表示するコントロールです。 他のコントロールと同様に、CSSからスタイルを設定できます。
focusTraversable
は、ノードではデフォルトでfalseになっていますが、コントロールではデフォルトでtrueになるようにオーバーライドされます。 デフォルトでフォーカス可能にする必要がないコントロール(ラベルなど)では、これがfalseにオーバーライドされます。
getMinWidth、getMinHeight、getPrefWidth、getPrefHeight、getMaxWidth、getMaxHeightの各関数は、スキンに直接委任されます。 baselineOffsetメソッドは、スキンのノードに委任されます。 サブクラスでこれらの委任を変更することはお薦めしません。
コントロールのスタイル設定
コントロールの外観をカスタマイズする方法が2つあります。 最も困難かつ最も柔軟なアプローチは、コントロールで実現しようとするビジュアルを正確に実装したコントロールの新しいスキンを作成することです。 詳細は、スキンのドキュメントを参照してください。
組込みのコントロールのスタイルを設定するための最も簡単で非常に強力な方法は、CSSを使用することです。 このリリースでは、次に示すCSSの説明は、組込みのコントロールのために提供されているデフォルトのスキンにのみ適用されることに注意してください。 今後のリリースでは、これらのCSS機能の利用を希望するカスタムのサード・パーティ・コントロールでも一般的に使用できるようになります。
組込みのコントロール用のデフォルトの各スキンは、複数の個別にスタイル設定可能な領域またはリージョンで構成されています。 これは、<div>で構成され、CSSからスタイル設定されるHTMLページとよく似ています。 個々のリージョンは、背景、ボーダー、イメージ、余白、マージンなどとともに描画される場合があります。 JavaFX CSSのサポートには、複数の背景およびボーダーを保持し、色を派生させることが含まれます。 これらの機能により、CSSからJavaFX内のコントロールの外観を変更することが非常に容易になります。
組込みのコントロールのデフォルトのスキンを描画するために使用される色は、すべて基本色、強調色および背景色から得られます。 コントロールの基本色を変更するのみで、派生したグラデーションを変更したり、デフォルトのスキンと視覚的に適合しながら視覚的に目立つボタンやその他のコントロールを作成できます。
シーングラフの他のすべてのノードと同様に、コントロールも外部のスタイルシートを使用したり、コントロールに直接スタイルを指定してスタイルを設定できます。 たとえば、ノードに直接スタイルを指定する方が、表現と理解は容易になりますが、HTML CSSでHTML要素のクラスまたはIDを使用する場合と同じように、外部のスタイルシートを使用し、コントロールのstyleClassまたはIDを使用することをお薦めします。
各UIコントロールでは、外部のスタイルシートからコントロールのスタイルを設定するために使用できるstyleClassを指定します。 たとえば、Buttonコントロールには「button」CSSスタイル・クラスが指定されます。 CSSスタイル・クラス名は、キャメル・ケースではなくハイフン区切りの小文字で、それ以外は完全に同じです。 たとえば、Buttonはbutton、RadioButtonはradio-button、Tooltipはtooltipというようになります。
各コントロールのクラスのドキュメントでは、スタイル設定可能なデフォルトのスキン・リージョンを定義しています。 JavaFXに備えられているCSS機能の詳細は、「CSSリファレンス・ガイド」を参照してください。
-
インタフェースのサマリー インタフェース 説明 Skin<C extends Skinnable> ノードのシーングラフを定義してスキンを表すことでユーザー・インタフェース・コントロールの視覚表現を定義するためのベース・クラス。Skinnable SkinnableインタフェースはControl
クラスによって実装されるため、すべてのControl実装によって実装されます。TextInputControl.Content テキスト入力のコンテンツを表すインタフェース。Toggle 選択状態と非選択状態とを切り替えることができるコントロールを表します。 -
クラスのサマリー クラス 説明 Accordion アコーディオンは、TitlePanes
のグループです。Alert AlertクラスはDialog
クラスのサブクラスであり、ユーザーにレスポンスを求める場合に簡単に表示できる事前作成済ダイアログ・タイプを数多くサポートしています。Button 単純なボタン・コントロール。ButtonBar ButtonBarは、HBox
にオペレーティング・システム固有のボタン配置のための機能を追加したものです。ButtonBase Hyperlink、Button、ToggleButton、CheckBoxe、RadioButtonなどのボタン形式のUIコントロールのベース・クラス。ButtonType ButtonTypeクラスは、ダイアログでユーザーに表示するボタンを指定するためのJavaFXDialog
API (より具体的にはDialogPane
API)の一部として使用します。Cell<T> CheckBox 通常、選択されたときにチェックマークまたは目盛が表示されるボックスとして示されるトライステート選択コントロール。CheckBoxTreeItem<T> 選択、選択解除および不確定の各状態のサポートを追加するTreeItemサブクラス。CheckBoxTreeItem.TreeModificationEvent<T> CheckBoxTreeItem階層を親ノードがnullになるまでこのイベントがバブル・アップするという点で、TreeItem.TreeModificationEvent
クラスと同様に機能するTreeModificationEventクラス。CheckMenuItem 選択状態と選択解除状態の切替えが可能なMenuItem
。ChoiceBox<T> ChoiceBoxは、ユーザーに選択可能な比較的小さいセットの事前に定義された選択項目を示すために使用されます。ChoiceDialog<T> ユーザーに選択肢のリストを表示するダイアログ。ユーザーはここから最大1つのアイテムを選択できます。ColorPicker ColorPickerコントロールを使用すると、ユーザーが標準のカラー・パレットで1回クリックするだけで色を選択したり、独自のカスタム色を定義できるようになります。ComboBox<T> ユーザーに選択肢を提供するポップアップ・リストを表示するという最も一般的な形式のComboBoxのComboBoxBase
抽象クラスの実装。ComboBoxBase<T> ComboBox形式のコントロールの抽象ベース・クラス。ContextMenu メニュー・アイテムのObservableListを含むポップアップ・コントロール。Control すべてのユーザー・インタフェース・コントロールのベース・クラス。CustomMenuItem DateCell DateCellは、カレンダ月に個々のグリッド・セルをレンダリングするためにDatePicker
によって使用されます。DatePicker DatePickerコントロールを使用すると、ユーザーが日付をテキストとして入力したり、カレンダ・ポップアップから日付を選択できるようになります。Dialog<R> JavaFXにおけるDialogはDialogPane
をラップし、それをエンド・ユーザーに表示するために必要なAPIを提供します。DialogEvent ダイアログの表示/非表示アクションに関連するイベント。DialogPane DialogPaneは、Dialog
インスタンス内に表示されるルート・ノードとみなされる必要があります。FocusModel<T> FocusModel実装の抽象ベース・クラス。Hyperlink ロールオーバーやクリックへの応答として表示されるグラフィックまたはテキスト(あるいはその両方)を示すHTML形式のラベル。IndexedCell<T> 視覚化の基礎となるデータ・モデルにマップされる索引プロパティを含むCell
の実装。IndexRange 整数値の連続する範囲を表すクラス。Label Labelは、編集不可のテキスト・コントロールです。Labeled ラベル付けされたControl
は、ユーザー・インタフェースの一部として関連付けられたテキスト・コンテンツを持ちます。ListCell<T> ListView<T> ListViewは、ユーザーが選択できるか、ユーザーが対話できるアイテムの水平または垂直のリストを表示します。ListView.EditEvent<T> 編集関連イベントを表すために特にListViewで使用されるEvent
サブクラス。Menu リクエスト時にのみユーザーに表示されるアクション可能なアイテムのポップアップ・メニュー。MenuBar MenuBarコントロールは通常ユーザー・インタフェースの最上部に配置され、Menus
が内部に組み込まれています。MenuButton MenuButtonは、クリックするか、押したときにContextMenu
が表示されるボタンです。MenuItem MenuItemは、ユーザーにオプションを提供する目的でMenu
と組み合せて使用されます。MultipleSelectionModel<T> APIを追加して複数選択をサポートするようにSelectionModel
を拡張する抽象クラス。Pagination Paginationコントロールは、1つのコンテンツを小さい部分に分割した複数のページ間の移動に使用されます。PasswordField 入力された文字をマスクするテキスト・フィールド。PopupControl CSSスタイルを許可するPopupWindowの拡張。ProgressBar 横棒として表される特殊なProgressIndicator。ProgressIndicator 進行状況を無限(不確定)または有限として示す円形コントロール。RadioButton RadioButtonは、一連の項目を作成し、その中から1つのみを選択させるためのものです。RadioMenuItem ResizeFeaturesBase<S> TableView
やTreeTableView
などのコントロールが提供する列サイズ変更ポリシーで使用されている不変のラッパー・クラス。ScrollBar ユーザーが操作可能な増分/減分ボタンとつまみを備えた横棒または縦棒。ScrollPane コンテンツのスクロールおよびクリップされるビューポートを提供するコントロール。ScrollToEvent<T> ScrollPane
および仮想化されたコントロール(ListView
、TableView
、TreeView
、TreeTableView
など)に関連するイベント。SelectionModel<T> SelectionModelは、一貫したAPIを提供して選択を維持するためにUIコントロールが使用する抽象クラスです。Separator 水平または垂直のセパレータ線。SeparatorMenuItem 名前が示すように、Separator
をCustomMenuItem
のcontent
プロパティに割り当てることによって水平セパレータを埋め込むことができるMenuItem
。menuitems
のグループをセパレータで区切れるように便宜上用意されています。SingleSelectionModel<T> 常に単一のインデックスのみが選択されるという要件を適用するSelectionModel。SkinBase<C extends Control> skin
を表すノードのシーングラフを定義して、ユーザー・インタフェース・コントロールの視覚表現を定義するためのベース実装クラス。Slider Sliderコントロールは、有効な数値の選択肢を連続範囲または離散範囲として表示し、ユーザーに値を選択させるために使用されます。SortEvent<C> TableView
およびTreeTableView
ソートに関連するイベント。Spinner<T> 順序付けられたシーケンスからユーザーが数値またはオブジェクト値を選択できるようにする単一行のテキスト・フィールド。SpinnerValueFactory<T> SpinnerValueFactoryはJavaFXSpinner control
の背後にあるモデルであり、値ファクトリが導入されていない場合、Spinnerは使用できません。SpinnerValueFactory.DoubleSpinnerValueFactory double値を反復処理するように設計されたSpinnerValueFactory
実装。SpinnerValueFactory.IntegerSpinnerValueFactory integer値を反復処理するように設計されたSpinnerValueFactory
実装。SpinnerValueFactory.ListSpinnerValueFactory<T> 値リストを反復処理するように設計されたSpinnerValueFactory
実装。SplitMenuButton SplitMenuButtonは、MenuButton
と同様に、メニューからMenuItem
を選択するという概念に密接に関連しています。SplitPane それぞれが区切り線で分割されている2つ以上のサイドを持つコントロールは、ユーザーがドラッグしてサイドの片側の領域を増やし、その分他方の領域を減らすことができます。SplitPane.Divider SplitPaneの単一のディバイダを表します。Tab タブはTabPane
内に配置され、各タブは単一のページを表します。TableCell<S,T> TableView
における単一の行/列交差を表します。TableColumn<S,T> TableView
は、多数のTableColumnインスタンスで構成されます。TableColumn.CellDataFeatures<S,T> 特定のCell
に対して必要なすべての情報を提供するためにTableColumnでラッパー・クラスとして使用されるサポート・クラス。TableColumn.CellEditEvent<S,T> ユーザーが表のセルで編集を実行したときに起動されるイベント。TableColumnBase<S,T> 表形式のコントロール(TableView
、TreeTableView
など)は、具象TableColumnBaseサブクラス(それぞれTableColumn
、TreeTableColumn
)の0個以上のインスタンスで構成されます。TableFocusModel<T,TC extends TableColumnBase<T,?>> 表形式のコントロール(特にTableView
とTreeTableView
)内で使用されるFocusModel実装の抽象ベース・クラス。TablePosition<S,T> このクラスは、TableViewの単一の行/列/セルを表すために使用されます。TablePositionBase<TC extends TableColumnBase> このクラスは、表の単一の行/列/セルを表すために使用されます。TableRow<T> TableRowはIndexedCell
ですが、TableViewインスタンスを作成する開発者はほとんど使用する必要がありません。TableSelectionModel<T> 表形式のコントロール(特にTableView
とTreeTableView
)内で使用されるMultipleSelectionModel実装の抽象ベース・クラス。TableView<S> TableViewコントロールは、無制限の数のデータ行と列を視覚化するために設計されています。TableView.ResizeFeatures<S> TableViewcolumn resize
機能で使用される不変のラッパー・クラス。TableView.TableViewFocusModel<S> TableViewコントロールの要件をサポートする追加機能を持つFocusModel
。TableView.TableViewSelectionModel<S> TableViewコントロール用の特別なサポートを可能にするSelectionModel
抽象クラスの単純な拡張。TabPane Tabs
のグループ間の切替えを許可するコントロール。TextArea ユーザーに対して複数行のプレーン・テキストの入力を許可するテキスト入力コンポーネント。TextField ユーザーに対して1行の書式なしテキストの入力を許可するテキスト入力コンポーネント。TextFormatter<V> Formatterは、次の2つの異なるメカニズムを使用してTextInputControl
テキストのフォーマットを記述します。ユーザー入力をインターセプトおよび変更できるフィルタ(TextFormatter.getFilter()
)。TextFormatter.Change TextInputControlのコンテンツまたは選択内容の変更を表す状態が含まれます。TextInputControl テキスト入力コントロールの抽象ベース・クラス。TextInputDialog ユーザーにテキスト入力コントロールを表示するダイアログ。TitledPane TitledPaneは、オープンおよびクローズできるタイトルを使用したパネルです。ToggleButton ToggleButton
は、選択可能な特殊コントロールです。ToggleGroup selected
変数を管理する必要があるすべてのToggle
への参照が含まれているクラス。これにより、任意の1つの時点でToggleGroup
内の単一の
のみを選択できるようにします。Toggle
ToolBar ToolBarは、水平または垂直にアイテムを表示するコントロールです。Tooltip ツールチップは一般的なUI要素であり、これらの要素は通常、シーングラフ内のノードがマウスでポイントされた場合にそのノードに関する追加情報を表示するために使用されます。TreeCell<T> TreeItem<T> TreeView
などのコントロールに値の階層を提供する単一のノードのモデル。TreeItem.TreeModificationEvent<T> TreeItemの変更のすべての形式に関する関連情報を含むEvent
。TreeTableCell<S,T> TreeTableView
における単一の行/列交差を表します。TreeTableColumn<S,T> TreeTableView
は、多数のTreeTableColumnインスタンスで構成されます。TreeTableColumn.CellDataFeatures<S,T> 特定のCell
に対して必要なすべての情報を提供するためにTreeTableColumnでラッパー・クラスとして使用されるサポート・クラス。TreeTableColumn.CellEditEvent<S,T> ユーザーが表のセルで編集を実行したときに起動されるイベント。TreeTablePosition<S,T> このクラスは、TreeTableViewの単一の行/列/セルを表すために使用されます。TreeTableRow<T> TreeTableRowはIndexedCell
ですが、TreeTableViewインスタンスを作成する開発者はほとんど使用する必要がありません。TreeTableView<S> TreeTableViewコントロールは、無制限の数のデータ行と列を視覚化するために設計されています。TreeTableView.EditEvent<S> 編集関連イベントを表すために特にTreeTableViewで使用されるEvent
サブクラス。TreeTableView.ResizeFeatures<S> TableViewcolumn resize
機能で使用される不変のラッパー・クラス。TreeTableView.TreeTableViewFocusModel<S> TableViewコントロールの要件をサポートする追加機能を持つFocusModel
。TreeTableView.TreeTableViewSelectionModel<S> TreeTableViewコントロールの特別なサポートを可能にするSelectionModel
抽象クラスの単純な拡張。TreeView<T> TreeViewコントロールは、ツリー・ルート(TreeItem
型)のビューを提供します。TreeView.EditEvent<T> 編集関連イベントを表すために特にTreeViewで使用されるEvent
サブクラス。 -
列挙型のサマリー 列挙型 説明 Alert.AlertType Alert
クラスが様々なプロパティを事前移入するために使用できる、使用可能な事前作成済のアラート・タイプが記述された列挙。ButtonBar.ButtonData すべての使用可能なボタン・データ注釈の列挙。ContentDisplay ラベル内でコンテンツを配置する位置。OverrunStyle テキストをレンダリングするスペースが文字列全体のレンダリングに必要なスペースよりも小さい場合の、ラベル付けされたControlの動作を定義します。ScrollPane.ScrollBarPolicy スクロール・バーを表示するかどうかを決定する際にスクロール可能なControlによって使用されるポリシーを示す列挙。SelectionMode MultipleSelectionModel
でいくつのアイテムを選択できるかを指定するために使用される列挙。TableColumn.SortType 特定の列に適用されるソートのタイプを指定する列挙。TabPane.TabClosingPolicy エンド・ユーザーの視点からTabPaneがタブのクローズをどのように処理するかを指定します。TabPane.TabDragPolicy この列挙型は、TabPane内のタブのドラッグ・ポリシーを指定します。TreeSortMode ツリー状のUIコントロール内のツリー・アイテムをどのようにソートするかを指定します。TreeTableColumn.SortType 特定の列に適用されるソートのタイプを指定する列挙。