我的html" target="_blank">程序很简单,只有两个场景,第二个场景只是说“这是第二个场景”,在第一个场景中,你必须选择一个文件夹,然后出现在一个不可编辑的文本域中。您可以使用后退和下一步按钮在这两个场景之间来回切换。问题是,当我转到第二个场景,然后再转到第一个场景时,TextField是空的,当它确实应该显示我之前选择的文件夹的路径时,但当我重新选择文件夹时,它再次显示,但每次我改变场景时,它都会消失。TextField的fx:ID是TextField。我尝试将文本设置为文件夹的路径,但这次是在back按钮的“back”方法中。但是,如果由于某种原因它不在OpenFolder方法中,那么它在其他任何地方都不起作用。我想知道为什么它只在OpenFolder方法中工作,而在其他任何地方都不行。这是我的控制器类:
package sample;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.stage.DirectoryChooser;
import javafx.stage.Stage;
import java.io.File;
import java.io.IOException;
import javafx.event.ActionEvent;
public class Controller {
private Stage stage;
private Scene scene;
private Parent root;
public Controller() {
}
@FXML
public void Next(ActionEvent event) throws IOException {
Parent root = FXMLLoader.load(getClass().getResource("scene2.fxml"));
stage = ((Stage)((Node)event.getSource()).getScene().getWindow());
scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
@FXML
public void Back(ActionEvent event) throws IOException{
Parent root = FXMLLoader.load(getClass().getResource("scene1.fxml"));
stage = ((Stage)((Node)event.getSource()).getScene().getWindow());
scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
@FXML
private TextField textfield = new TextField();
@FXML
private AnchorPane anchorid1;
@FXML
public static File thefolder;
@FXML
DirectoryChooser SongsOpener;
@FXML
public File OpenFolder(){
final DirectoryChooser SongsOpener = new DirectoryChooser();
stage = (Stage) anchorid1.getScene().getWindow();
thefolder = SongsOpener.showDialog(stage);
if (thefolder != null){
textfield.setText(thefolder.getAbsolutePath());
}
return thefolder;
}
}
这是我的fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<AnchorPane fx:id="anchorid1" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="411.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/16" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
<children>
<Text layoutX="326.0" layoutY="76.0" strokeType="OUTSIDE" strokeWidth="0.0" text="This is scene 1">
<font>
<Font size="33.0" />
</font>
</Text>
<Button layoutX="939.0" layoutY="373.0" mnemonicParsing="false" onAction="#Next" text="Next" />
<Label layoutX="63.0" layoutY="117.0" prefHeight="18.0" prefWidth="122.0" text="Songs folder :">
<font>
<Font size="20.0" />
</font></Label>
<Button layoutX="888.0" layoutY="121.0" mnemonicParsing="false" onAction="#OpenFolder">
<graphic>
<ImageView fitHeight="18.0" fitWidth="17.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../toppng.com-folder-icon-png-transparent-black-and-white-folder-ico-1589x1366.png" />
</image>
</ImageView>
</graphic>
</Button>
<TextField fx:id="textfield" layoutX="190.0" layoutY="119.0" prefHeight="23.0" prefWidth="685.0" />
</children>
</AnchorPane>
在这里,它显示了我选择文件夹图像后TextField中的路径
但当我走到下一个场景回来时,它就消失了:图像
你不是在“切换”场景。您每次都在创建一个新的场景实例。
并且显示错误 正如您所看到的,当我单击Button时,我想从CurrentWeatherFragment调用一个方法,从ForecastWeatherFragment调用一个方法。
public boolean allPairsFound(){
首先,是的,我读过这个线程Protobuf-Missing toByteArray()?,这并没有解决我的问题。 我按照这里描述的这个确切步骤安装了原型:https://gist.github.com/sofyanhadia/37787e5ed098c97919b8c593f0ec44d8. 我的原型文件非常简单: 我转到我的proto路径,并使用以下方法对其进行proto编译: 该类确实是创建的
以调试模式在SM G955F上启动lib/main.dart... lib/main.dart:1 失败:构建失败,但有例外。 出了什么问题:任务': app: Process DebugResources'执行失败。 执行com时出错。Android建筑格拉德尔。内部的任务。Workers$ActionFacade Android资源链接失败/Users/canseyhan/Documents/
然后,我创建了注释代码。 结果 原因:java.lang.StringIndexOutOfBoundsException:长度=0;指数=-6 说真的,我和这个代码斗争了7小时30分钟。