JavaFX学習のTable View
Table Viewテーブル
Table Column列
テーブルの構築には、主にTableView、TableColumn、ObservableList、Beanがあります.
列tableを追加します.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
ObservableListに格納されているデータ
table.setItems(observableList);データの追加
observableListには通常、格納されたBeanがあり、列とBeanとの間に連絡を取り、値を取得します.
カラムとBeanの間の連絡先:
emailCol.setCellValueFactory(new PropertyValueFactory("email"));cell値ファクトリを介してBeanとの連絡を確立します.ここでは、Beanが何を伝えたのかを知る必要はありません.「email」でgetEmail()メソッドに反射してBeanに値を取得するだけです.したがって、Beanプロパティ定義の名前は同じではなく、getEmail()メソッドが必要です.
arg0.getValue()はここのpersonに等しい.もしあなたがadd(list)、arg 0.getValue()はlistに等しい.
SimpleStringProperty(arg0.getValue(),"sd",arg0.getValue().getFirstName());
ここでの意味はarg 0である.getValue()はあなたのobservableListです.addの値、「sd」はbeanが名前を取得し、arg 0.getValue().getFirstName()は、カラムが取得したい値です.listの場合arg 0.getValue().get(j)は、その列の各行に値を付与する.
cellには文字だけでなく、他のノードも保存できます.
TreeCellと同様に、cellの中を再構築することができます.
lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn());いくつかのデフォルトの構造があり、自分でnew Table Cellに行く必要はありません.
Table Column sortを設定する3つの方法
firstNameCol.setSortNode(new Text("a"));//デフォルトは、ヘッダー上の小さなアイコンの三角形で、変更できます.
firstNameCol.setSortable(true);//ソート可能な設定
firstNameCol.setSortType(SortType.DESCENDING);昇降順の設定
1つのcolumnに複数のcolumnを含めるには、Table ColumnのgetColumns()を呼び出すことができる.setAll(TableColumn...);
tableのユニット間には明らかな横線分割があり,cssで取り除くことができる.
横線を引く
データのない縦線を同時に取り除くには
行を操作するにはsetRowFactoryを使用します.次のように行のダブルクリックを行います.
tableにデータを挿入して、tableの中のデータは表示して、あなたのitemlistから来たので、listの中のデータはどんな順序を並べて、それではtableもどんな順序を並べます.新しいデータを追加すると、リストに直接追加します.リストはまた位置による加算を提供し、tableは位置による加算を表示します.
新レコードは新しいオブジェクトで、値が割り当てられていません.
カスタムTableセルは一般的にupdateItemメソッドを書き換える.編集操作が必要な場合はstartEdit,cancelEditを書き換えることができます
編集状態をクリックすると、Cellの内容が変更されることがわかります.編集を離れると元cellの内容に変わります.これにより、表示される文字列が文字列になり、編集時にカレンダーなどのコントロールができます.
選択したTable Columnの取得
table独自の方法でcolumnをフィルタリングできます.つまり、どのcolumnだけを表示しますか.
trueに設定すると、columnをフィルタできるプラス記号のcolumnが表示されます.
tableのデフォルトでは1行しか選択できませんが、複数行を選択したい場合はSelectionModeを設定し、選択した複数をリスニングできます.
tableView.getSelectionModel()は、2つのサブクラスMultipleSelectionModel、SingleSelectionModelを有する抽象クラスSelectionModelを得る.これらは主に選択イベントを処理し、それらの方法を見ることができます.
選択したitemとインデックスを取得します.1つはその値を取得することであり,もう1つはbind変化のためのパッケージ属性を取得することである.
これらの方法はすべて操作選択です.
MultipleSelectionModelは、複数選択機能を提供し、複数選択のいくつかの方法を提供します.
TableView.TableViewSelectionModelはMultipleSelectionModelを継承しており、主にtableの選択イベントに対していくつかの方法を提供しています.
ここにjavafxの小さいゲームがたくさんあって、1人の達人が書いたのです
http://lustrezhang.gotoip4.com/fxgame/
ここにjavafxが勉強している中国語のウェブサイトがあります.私は内容をその上に捨てました.
http://www.jfxee.com/
Table Column列
テーブルの構築には、主にTableView、TableColumn、ObservableList、Beanがあります.
列tableを追加します.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
ObservableListに格納されているデータ
table.setItems(observableList);データの追加
observableListには通常、格納されたBeanがあり、列とBeanとの間に連絡を取り、値を取得します.
カラムとBeanの間の連絡先:
emailCol.setCellValueFactory(new PropertyValueFactory
firstNameCol.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Person, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call(CellDataFeatures<Person, String> arg0) {
// return new
// SimpleStringProperty(arg0.getValue(),"sd",arg0.getValue().getFirstName());
// //bean, bean ,
return new SimpleStringProperty(arg0.getValue().getFirstName());
// 。
}
});
arg0.getValue()はここのpersonに等しい.もしあなたがadd(list)、arg 0.getValue()はlistに等しい.
SimpleStringProperty(arg0.getValue(),"sd",arg0.getValue().getFirstName());
ここでの意味はarg 0である.getValue()はあなたのobservableListです.addの値、「sd」はbeanが名前を取得し、arg 0.getValue().getFirstName()は、カラムが取得したい値です.listの場合arg 0.getValue().get(j)は、その列の各行に値を付与する.
cellには文字だけでなく、他のノードも保存できます.
firstNameCol.setCellFactory(new Callback<TableColumn<Person, String>, TableCell<Person, String>>() {
@Override
public TableCell<Person, String> call( //
TableColumn<Person, String> arg0) {
return new TableCell<Person, String>() { @Override
protected void updateItem(final String str,boolean arg1) {
super.updateItem(str, arg1);
if (arg1) { setText(null);
setGraphic(null);
else { setText(str);
setGraphic(new CheckBox());
}
}
}
});
TreeCellと同様に、cellの中を再構築することができます.
lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn());いくつかのデフォルトの構造があり、自分でnew Table Cellに行く必要はありません.
Table Column sortを設定する3つの方法
firstNameCol.setSortNode(new Text("a"));//デフォルトは、ヘッダー上の小さなアイコンの三角形で、変更できます.
firstNameCol.setSortable(true);//ソート可能な設定
firstNameCol.setSortType(SortType.DESCENDING);昇降順の設定
1つのcolumnに複数のcolumnを含めるには、Table ColumnのgetColumns()を呼び出すことができる.setAll(TableColumn...);
firstNameColumn = new TableColumn<Person, String>("First");
firstNameColumn.setCellValueFactory(new PropertyValueFactory<Person, String>("firstName"));
// firstNameColumn.setCellFactory(TextFieldCellFactory.<Person>forTableColumn());
lastNameColumn = new TableColumn<Person, String>("Last");
lastNameColumn.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName"));
// lastNameColumn.setCellFactory(TextFieldCellFactory.<Person>forTableColumn());
nameColumn = new TableColumn<Person, String>("Name");
nameColumn.getColumns().setAll(firstNameColumn, lastNameColumn);
tableのユニット間には明らかな横線分割があり,cssで取り除くことができる.
横線を引く
.table-view .table-row-cell {
-fx-background-insets: 0;
}
データのない縦線を同時に取り除くには
.table-row-cell:empty .table-cell {
-fx-border-width: 0px;
}
行を操作するにはsetRowFactoryを使用します.次のように行のダブルクリックを行います.
tableView.setRowFactory(new Callback<TableView<T>, TableRow<T>>() {
@Override
public TableRow<T> call(TableView<T> param) {
return new TableRowControl();
}
});
class TableRowControl extends TableRow<T> {
public TableRowControl() {
super();
this.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.getButton().equals(MouseButton.PRIMARY)
&& event.getClickCount() == 2
&& TableRowControl.this.getIndex() < tableView.getItems().size()) {
//doSomething
}
}
});
}
}
tableにデータを挿入して、tableの中のデータは表示して、あなたのitemlistから来たので、listの中のデータはどんな順序を並べて、それではtableもどんな順序を並べます.新しいデータを追加すると、リストに直接追加します.リストはまた位置による加算を提供し、tableは位置による加算を表示します.
tableView.getItems().add(selectedRow, newRecord);
新レコードは新しいオブジェクトで、値が割り当てられていません.
カスタムTableセルは一般的にupdateItemメソッドを書き換える.編集操作が必要な場合はstartEdit,cancelEditを書き換えることができます
@Override
public void startEdit() {
if (!this.getTableRow().isVisible()) {
return;
}
super.startEdit();
if (checkBox == null) {
createCheckBox();
}
setText(null);
setGraphic(checkBox);
}
@Override
public void cancelEdit() {
super.cancelEdit();
setText(getItem().toString());
setGraphic(null);
}
編集状態をクリックすると、Cellの内容が変更されることがわかります.編集を離れると元cellの内容に変わります.これにより、表示される文字列が文字列になり、編集時にカレンダーなどのコントロールができます.
選択したTable Columnの取得
table.getSelectionModel().getSelectedCells().get(0).getTableColumn()
table独自の方法でcolumnをフィルタリングできます.つまり、どのcolumnだけを表示しますか.
table.setTableMenuButtonVisible(true);
trueに設定すると、columnをフィルタできるプラス記号のcolumnが表示されます.
tableのデフォルトでは1行しか選択できませんが、複数行を選択したい場合はSelectionModeを設定し、選択した複数をリスニングできます.
ListChangeListener<Person> indicesListener = new ListChangeListener<Person>() {
@Override public void onChanged(Change<? extends Person> c) {
while (c.next()) {
selectionUpdated(c.getAddedSubList(), c.getRemoved());
}
}
};
tableView.getSelectionModel().getSelectedItems().addListener(indicesListener);
tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
tableView.getSelectionModel()は、2つのサブクラスMultipleSelectionModel、SingleSelectionModelを有する抽象クラスSelectionModelを得る.これらは主に選択イベントを処理し、それらの方法を見ることができます.
getSelectedIndex()
getSelectedItem()
selectedIndexProperty()
selectedItemProperty()
選択したitemとインデックスを取得します.1つはその値を取得することであり,もう1つはbind変化のためのパッケージ属性を取得することである.
select(int index)
select(T obj)
selectFirst()
selectLast()
...
clearSelection()
clearSelection(int index)
これらの方法はすべて操作選択です.
setSelectionMode(SelectionMode.MULTIPLE);
selectIndices(int index, int... indices)
selectRange(int start, int end)
MultipleSelectionModelは、複数選択機能を提供し、複数選択のいくつかの方法を提供します.
select(int row, TableColumn<S,?> column)
selectAboveCell()
selectBelowCell()
selectLeftCell()
selectRightCell()
setCellSelectionEnabled(boolean value)
TableView.TableViewSelectionModel
ここにjavafxの小さいゲームがたくさんあって、1人の達人が書いたのです
http://lustrezhang.gotoip4.com/fxgame/
ここにjavafxが勉強している中国語のウェブサイトがあります.私は内容をその上に捨てました.
http://www.jfxee.com/