TextField textField = (TextField)root2.lookup("#textField"); 这句中 root2 报错
时间: 2024-03-10 09:44:52 浏览: 65
这个错误可能是因为 `root2` 变量没有被正确初始化,导致查找文本框时出错。可以检查以下几点:
1. 请确认在 `FXMLLoader.load()` 方法中是否正确加载了 `StartView.fxml`文件,并且文件路径是否正确。如果文件路径不正确,会导致 `root2` 变量为 `null`。
2. 请确认 `StartView.fxml` 文件中是否包含一个名为 `textField` 的 `TextField` 控件。如果 `FXML` 文件中没有这个控件,`lookup()` 方法会返回 `null`。
如果以上两个条件都满足,那么可以尝试在查找时使用 `FXMLLoader.load()` 方法返回的根节点来查找 `TextField` 控件,而不是使用 `root2` 变量。例如:
```java
FXMLLoader loader = new FXMLLoader(getClass().getResource("/controller/StartView.fxml"));
Parent root2 = loader.load();
// ...
TextField textField = (TextField)loader.getNamespace().get("textField");
```
这样就可以通过 `loader` 对象来获取 `textField` 控件了。注意,在使用 `getNamespace()` 方法时,需要等待 `FXMLLoader.load()` 方法执行完毕后再调用,否则会返回 `null`。
相关问题
public void onclick00(MouseEvent mouseEvent) throws IOException { // 第二界面 Service.method=00; Parent root2 = FXMLLoader.load(getClass().getResource("/controller/StartView.fxml")); JFrame frame = new JFrame();// 创建一个窗口 frame.setTitle("显示确认");// 设置窗口标题 frame.setBounds(200, 100, 500, 300);// 设置窗口位置和大小 frame.setLayout(null);// 布局为空 JPanel panel1 = new JPanel(); JLabel labTitle = new JLabel("哲学家人数已改变");//设置窗口标题 Font font1 = new Font("宋体", Font.BOLD, 20);//设置字形,字体和字号 labTitle.setFont(font1); panel1.add(labTitle); panel1.setBounds(80, 20, 300, 80);//设置窗口位置和大小 frame.add(panel1); frame.setVisible(true);// 显示窗口 }这段代码能不能获取text文本框中的值
这段代码并没有显示出文本框,因此无法直接获取文本框中的值。需要先在界面中添加文本框,然后在代码中通过相应的方法获取文本框的值。可以使用FXML文件来定义界面,然后在Controller中进行操作。例如,在FXML文件中添加一个文本框:
```xml
<TextField fx:id="textField" layoutX="50.0" layoutY="50.0" prefWidth="200.0" />
```
然后在Controller中获取文本框的值,可以在onclick00方法中添加以下代码:
```java
TextField textField = (TextField)root2.lookup("#textField"); // 获取FXML文件中定义的文本框
String text = textField.getText(); // 获取文本框中的值
```
这样就可以获取到文本框中的值了。
阅读全文