私は、TableViewといくつかのTableColumnsなどを含むfxmlで書かれたウィンドウを持っています。 私はこのウィンドウにコントローラ内の関数を作成しようとしています。これにより、ユーザーは別のウィンドウに一連のチェックボックスを使って表示する列を選択できます。 このウィンドウはHealthCheckTabの子ウィンドウになります。ボタンを押すと、すべてのチェックボックスの状態が取得され、不要な列が表示されないようにTableviewを更新するHealtkcheckTabの関数が呼び出されます。別のウィンドウでCheckBoxを介してTableViewのTableColumnsを非表示にする
これは、これはコントローラ(抽出)
@FXML
private TreeView<String> HCTree;
@FXML
private TableView<Map> HcTable;
@FXML
private TableColumn<Map, String> colId;
@FXML
private TableColumn<Map, String> colName;
@FXML
private TableColumn<Map, String> colVal;
@FXML
private TableColumn<Map, String> colDescrCn;
@FXML
private TableColumn<Map, String> colDatatype;
@FXML
private TableColumn<Map, String> colTool;
@FXML
private TableColumn<Map, String> colPrio;
@FXML
private TableColumn<Map, String> colScope;
@FXML
private TableColumn<Map, String> colAvg;
@FXML
private TableColumn<Map, String> colMin;
@FXML
private TableColumn<Map, String> colRelComp;
// -----------------------------------------------------------------------------------------------
// REFRESH TABLE
// -----------------------------------------------------------------------------------------------
public void refreshTable() {
System.out.println("apply");
colScope.setVisible(true);
//colId.setVisible(false);
}
別ウィンドウ(抽出)
@FXML
private void handleApplyViewOptions() {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("HealthCheckTab.fxml"));
Stage stage = new Stage(StageStyle.DECORATED);
stage.setScene(new Scene(loader.load()));
HealthCheckTabController controller = loader.<HealthCheckTabController> getController();
controller.refreshTable();
} catch (IOException e) {
java.lang.System.err.println(e.getStackTrace());
}
Stage stage = (Stage) btnApply.getScene().getWindow();
stage.close();
}
RefreshTableの関数であり、テーブルビュー(抽出)
</TitledPane>
<TitledPane fx:id="classificationNumbers" animated="false"
text="HealthCheck Classification Numbers">
<content>
<ScrollPane fitToHeight="true" fitToWidth="true"
hbarPolicy="ALWAYS" maxHeight="1.7976931348623157E308"
maxWidth="1.7976931348623157E308" pannable="true">
<content>
<TableView fx:id="HcTable" editable="true"
maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
minWidth="-Infinity" tableMenuButtonVisible="true">
<columns>
<TableColumn fx:id="colId" editable="false"
maxWidth="-Infinity" minWidth="40.0" prefWidth="-1.0" text="ID" />
<TableColumn fx:id="colName" editable="false"
maxWidth="1.7976931348623157E308" minWidth="60.0"
prefWidth="-1.0" text="Name" />
<TableColumn fx:id="colVal" maxWidth="1.7976931348623157E308"
minWidth="55.0" prefWidth="-1.0" text="Value" />
<TableColumn fx:id="colDescrCn" editable="false"
maxWidth="1.7976931348623157E308" minWidth="90.0"
prefWidth="-1.0" text="Comment (CN)" />
<TableColumn fx:id="colDatatype" editable="false"
maxWidth="1.7976931348623157E308" minWidth="80.0"
prefWidth="-1.0" text="Datatype" />
<TableColumn fx:id="colTool" maxWidth="1.7976931348623157E308"
minWidth="50.0" prefWidth="-1.0" text="Tool" visible="false" />
<TableColumn fx:id="colPrio" editable="false"
maxWidth="1.7976931348623157E308" minWidth="60.0"
prefWidth="-1.0" text="Priority" />
<TableColumn fx:id="colScope" maxWidth="1.7976931348623157E308"
minWidth="50.0" prefWidth="-1.0" text="Scope" visible="false" />
<TableColumn fx:id="colAvg" editable="false"
maxWidth="1.7976931348623157E308" minWidth="50.0"
prefWidth="-1.0" text="AVG" visible="false" />
<TableColumn fx:id="colMin" maxWidth="1.7976931348623157E308"
minWidth="50.0" prefWidth="-1.0" text="MIN" visible="false" />
<TableColumn fx:id="colRelComp" prefWidth="122.0"
text="Relative Comparable" />
</columns>
</TableView>
</content>
</ScrollPane>
</content>
</TitledPane>
有するウィンドウでありますScope Columnをまったく隠すわけではありません。 理由がわかりません...
1. "scope"カラムは8でなく、インデックス7を持っているように見えます(なぜなら 'colScope.setVisible(...) 'をとにかく呼び出さないでください)2. setVisible(true)何かを隠すだろうか? 3.あなたは 'refreshTable()'をどこで呼びますか?プロジェクトの不完全な部分(問題に関係のないコードがたくさんある)を投稿するのではなく、問題を示す[MCVE]を作成して投稿することをお勧めします。 –
はい私はsetVisible(true)が何かを変更することを期待していましたが、何が間違っているのか間違っていますか?私は不要な部分を取り除き、リフレッシュが呼び出される行を追加しました... –
確かに、何かを非表示にするには 'setVisible(false)'を使いますか? –