java - professional - que es adobe flash
JavaFX completa una vista de tabla no posible (1)
Deje <name>
denotar el parámetro constructor de PropertyValueFactory
y permita que <Name>
indique la misma String
, pero con una primera letra mayúscula.
PropertyValueFactory
puede obtener el valor de una de las siguientes fuentes:
- El getter de la propiedad, es decir, el método
SomeObservableValue <name>Property()
. - El método getter, es decir, el método
SomeType get<Name>()
.
Ninguno de ellos existe en tu clase de Values
.
Para que psicolumn
la psicolumn
, Values
necesita un DoubleProperty PSIProperty()
o un método double getPSI()
. (Mismo problema con las otras columnas)
Esta pregunta ya tiene una respuesta aquí:
- Javafx PropertyValueFactory no ocupa Tableview 2 respuestas
Acabo de empezar con javafx y quería crear un TableView
con 3 columnas donde puedo mostrar algunos valores. TableView
y las columnas con el editor de escena como archivo fxml. Luego creé una clase llamada Values
con las propiedades especiales que coincidí con las columnas donde deberían caber. Finalmente establecí la lista observable con los objetos "Valor" en ella como elementos de la tabla. Cuando inicio la aplicación, solo me muestra una tabla vacía. Parecía 4 horas en Internet ahora y todavía no encontré una respuesta por qué esto no funciona para mí.
Aquí mi código:
Clase de valor:
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);
}
}
Controlador:
@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();
}
}
Y mi 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>
¡Gracias por tu ayuda!