私はちょうどjavafxを使い始めました。私はTableView
を作成して、3つのカラムでいくつかの値を表示できるようにしたかったのです。 シーンエディタでfxmlファイルとしてTableView
とその列を作成しました。 次に、適切な列に一致する特別なプロパティを持つValues
というクラスを作成しました。 最後に、オブザーバブルリストにテーブルの項目として「値」オブジェクトを設定しました。アプリケーションを起動すると、空のテーブルだけが表示されます。 インターネットで4時間のように見えましたが、なぜこれが私にとってうまくいかないのか答えが見つからなかった。JavaFXでテーブルビューを作成できません
ここに私のコード:
値クラス:
public class Values {
public SimpleDoubleProperty PSI = new SimpleDoubleProperty(0);
public SimpleDoubleProperty ALPHA = new SimpleDoubleProperty(0);
public SimpleDoubleProperty DELTA = new SimpleDoubleProperty(0);
public Values(Double _PSI, Double _ALPHA, Double _DELTA) {
setPSI(_PSI);
setALPHA(_ALPHA);
setDELTA(_DELTA);
}
private void setPSI(Double p){
PSI.set(p);
}
private void setALPHA(Double p){
ALPHA.set(p);
}
private void setDELTA(Double p){
DELTA.set(p);
}
}
コントローラー:
@FXML Label psi;
@FXML Label alpha;
@FXML Label delta;
@FXML TextField betafield;
@FXML TextField lambdafield;
@FXML TextField lambdasatfield;
@FXML TableView<Values> table;
@FXML ObservableList<Values> oblist;
@FXML TableColumn <Values,Double> psicolumn;
@FXML TableColumn <Values,Double> alphacolumn;
@FXML TableColumn <Values,Double> deltacolumn;
@Override
public void initialize(URL location, ResourceBundle resources) {
psicolumn.setCellValueFactory(new PropertyValueFactory<Values, Double>("PSI"));
alphacolumn.setCellValueFactory(new PropertyValueFactory<Values, Double>("ALPHA"));
deltacolumn.setCellValueFactory(new PropertyValueFactory<Values, Double>("DELTA"));
}
@FXML
protected void buttonpressed(){
try {
Calculation cal = new Calculation(Double.parseDouble(betafield.getText()), Double.parseDouble(lambdafield.getText()), Double.parseDouble(lambdasatfield.getText()));
alpha.setText("Alpha: " + " " + cal.calculateAlpha());
delta.setText("Delta:"+ " " + cal.calculateDelta());
psi.setText("Psi:"+ " " + cal.calculatePSI());
table.setItems(FXCollections.observableArrayList(cal.calculateEvaluaiontable()));
}catch (NullPointerException e){
e.printStackTrace();
}
}
そして、私のFXML:あなたの助けのための
<Tab text="tab" fx:id="tabe">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<TableView layoutX="4.0" layoutY="4.0" prefHeight="192.0" prefWidth="370.0" fx:id="table">
<columns>
<TableColumn prefWidth="120.0" text="PSI" fx:id="psicolumn" />
<TableColumn prefWidth="120.0" text="ALPHA" fx:id="alphacolumn" />
<TableColumn prefWidth="120.0" text="DELTA" fx:id="deltacolumn" />
</columns>
</TableView>
</children>
</AnchorPane>
</content>
</Tab>
ありがとう!
名前のついたバリューゲッターやプロパティゲッターが必要です。詳細な回答はリンクされた質問を参照してください。 – Itai
@sillyflyあなたの答えに感謝します。私は他のトピックをチェックし、私のコードを少し変更しましたが、それは私の問題を解決しません –
あなたが正しい名前でバリューゲッターを持っていて、それでも問題が解決しない場合は、 – Itai