修改:对于将来阅读本文的人,您需要将parameters
添加到我在帖子中显示的方法中。
不是+ textview +
,而是+with parameter+
,然后在controller
中,您为integers/strings
制作parameters
并将其设置为textview.getText()
,然后将integers/strings
放在method parameters
类中实例的controller
内。
原帖
如何从Controller类之外的另一个类中的方法中获取TextView
的值?
我无法在textview.getText();
课程之外使用Controller
,或者只会给我NullPointerException
。
以下是我其他班级的方法:
Controller c;
public void createRecipes() throws SQLException {
openDB();
if (connectionDB != null) {
Statement st = this.connectionDB.createStatement();
String insert = "INSERT INTO recipes "
+ " (ID, name, temperature, fan, redlight, bluelight, addwater) " + " VALUES "
+ " ( " + c.createID.getText() + ", " + c.createName.getText() + ", " +c. createTemperature.getText() + ", " + c.createFan.getText() + ", " + c.createRedLight.getText() + ", " + c.createBlueLight.getText() + ", " + c.createWaterLevel.getText() + " ) ;";
st.executeUpdate(insert);
} else {
System.out.println("No connection established to the database.");
}
closeDB();
}
这是我从控制器类中获取的文本字段:
c.createBlueLight.getText()
答案 0 :(得分:0)
您不应该在控制器之外使用fx组件!你应该总是把逻辑和ui分开。所以只需将文本内容传递给方法。
答案 1 :(得分:-1)
这是访问通过解析来自FXMLLoader
public class Controller {
@FXML
private TextField textField;
public TextField getTextField() {
return textField;
}
public String getTextFieldValue() {
return textField.getText();
}
}
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));
Parent root = loader.load();
Controller controller = loader.getController();
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
因此控制器已正确初始化(textField
字段不为空),我们可以毫无问题地使用它,例如
TextField textField = controller.getTextField();
或
String value = controller.getTextFieldValue();