如何在文本区域元素中显示消息后关闭此JavaFX应用程序
我刚刚注册,因为我必须在明天早上2月24日提交一个
JavaFX应用程序,在尝试了很多东西之后,我无法为我的应用程序的最后部分找到解决方案.
我正在开发的应用程序是一个游戏,其中用户是一个玩家,PC是另一个玩家,“机器”是生成随机数的实体. 如果他们猜测即将到来的数字,他们会在分数上加分. 最后,达到10分的第一个(用户或PC)赢得比赛. 一切都被编码到这里,但是当我试图结束显示胜利者的消息并退出游戏的游戏时,我无法找到我必须写的代码以退出游戏并关闭窗口10秒后带有游戏获胜者的消息显示在文本区域中. 你可以帮我告诉我在获胜者的消息出现10秒后我必须在我的应用程序上自动关闭它的代码,请??? 我需要明天2月24日格林威治标准时间07:30. 我附上了我拥有的4个文件:我的JavaFX应用程序的主要代码,样式的CSS,图形界面和元素的FXML文件以及用于启动应用程序的Java文件(我认为).该应用程序称为“Ramdoning”.我来自西班牙,所以一些单词和评论都是西班牙语.用///////////////////////////////////去区.在那里,我想知道我需要放置什么. 你能告诉我在.fxml文件的组合框中预定一个数字我该怎么办?例如,要显示自程序启动以来的数字5. 他们在这里(文件): Estilos.css: .fondo { -fx-background-color: #0B610B; } .titulo { -fx-font-family: Arial; -fx-font-weight: Bold; -fx-font-size: 30px; -fx-text-align: centre; -fx-text-fill: #66BBFC; } .texto { -fx-font-family: Arial; -fx-font-weight: Bold; -fx-font-size: 15px; -fx-text-fill: #F49A09; } FXMLDocument.fxml: <?xml version="1.0" encoding="UTF-8"?> <?import java.lang.*?> <?import java.net.*?> <?import java.util.*?> <?import javafx.collections.*?> <?import javafx.scene.*?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> <AnchorPane id="AnchorPane" prefHeight="700.0" prefWidth="600.0" styleClass="fondo" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="ramdoning.FXMLDocumentController"> <children> <Label fx:id="label" layoutX="126.0" layoutY="120.0" minHeight="16.0" minWidth="69.0" /> <Label layoutX="218.0" layoutY="38.0" styleClass="titulo" text="Ramdoning" visible="true"> <stylesheets> <URL value="@Estilos.css" /> </stylesheets> </Label> <Label layoutX="44.0" layoutY="104.0" styleClass="texto" text="?Que número aleatorio del 1 al 10 crees que la maquina va a generar?"> <stylesheets> <URL value="@Estilos.css" /> </stylesheets> </Label> <TextField fx:id="tfAleatuser" layoutX="44.0" layoutY="136.0" prefWidth="200.0" text="1" /> <Label layoutX="44.0" layoutY="190.0" styleClass="texto" text="?Qué número del 1 al 10 crees que va a elegir el PC?"> <stylesheets> <URL value="@Estilos.css" /> </stylesheets> </Label> <ComboBox id="cb" fx:id="cbAleatpc" disable="false" layoutX="44.0" layoutY="223.0" visibleRowCount="10"> <items> <FXCollections fx:factory="observableArrayList"> <String fx:value="1" /> <String fx:value="2" /> <String fx:value="3" /> <String fx:value="4" /> <String fx:value="5" /> <String fx:value="6" /> <String fx:value="7" /> <String fx:value="8" /> <String fx:value="9" /> <String fx:value="10" /> </FXCollections> </items> </ComboBox> <Button fx:id="btAjugar" layoutX="437.0" layoutY="136.0" mnemonicParsing="false" onAction="#aJugar" prefHeight="54.0" prefWidth="117.0" text="?A jugar!" /> <Label layoutX="44.0" layoutY="278.0" styleClass="texto" text="Resultado:"> <stylesheets> <URL value="@Estilos.css" /> </stylesheets> </Label> <TextArea fx:id="taResultado" editable="true" layoutX="44.0" layoutY="307.0" opacity="0.72" prefHeight="355.0" prefWidth="510.0" wrapText="true" /> </children> <stylesheets> <URL value="@Estilos.css" /> </stylesheets> </AnchorPane> Ramdoning.java: package ramdoning; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; public class Ramdoning extends Application { @Override public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); Scene scene = new Scene(root); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } } FXMLDocumentController.java(这是我认为我必须进行修改的地方.见/////////////////): package ramdoning; import java.net.URL; import java.util.Random; import java.util.ResourceBundle; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.ComboBox; import javafx.scene.control.TextArea; import javafx.scene.control.TextField; public class FXMLDocumentController implements Initializable { // Declaramos las variables que vamos a utilizar para extraer la información del usuario: @FXML private TextField tfAleatuser; @FXML private ComboBox cbAleatpc; @FXML private TextArea taResultado; // Inicializamos los contadores necesarios para establecer el marcador: int puntosusuario = 0; int puntospc = 0; // Establecemos las instrucciones a seguir a la hora de pulsar el botón establecido para jugar: @FXML private void aJugar(ActionEvent event) { // Pasamos a cadenas la información introucida por el usuario en la interfaz gráfica: // El número aleatorio que el usuario cree que la máquina va a generar: String au = tfAleatuser.getText(); // El número aleatorio que el usuario cree que el PC ha elegido: String auc = cbAleatpc.getValue().toString(); // Comenzamos a generar aleatoriamente los números del PC y de la máquina: Random rnd = new Random(); // Generamos el número aleatorio de la máquina y lo pasamos a una cadena: int aleatorio = rnd.nextInt(10)+1; String ag = Integer.toString(aleatorio); // Generamos (de forma aleatoria) el número que el PC cree que va a sacar la máquina y lo pasamos a una cadena: int aleatorio_pc = rnd.nextInt(10)+1; String ac = Integer.toString(aleatorio_pc); // Generamos (de forma aleatoria) el número que el PC cree que el usuario ha elegido y lo pasamos a una cadena: int aleatorio_pc_u = rnd.nextInt(10)+1; String acu = Integer.toString(aleatorio_pc_u); // Mostramos los primeros datos en la caja de los resultados: taResultado.setText("No aleatorio elegido por el usuario: "+au+"nn"); taResultado.appendText("No aleatorio elegido por el PC: "+ac+"nn"); taResultado.appendText("El no que el usuario piensa que el PC ha elegido es: "+auc+"nn"); taResultado.appendText("El no que el PC piensa que el usuario ha elegido es: "+acu+"nn"); taResultado.appendText("No aleatorio generado: "+ag+"nn"); // Realizamos las comparaciones necesarias para determinar cuántos puntos ha ganado cada uno y vamos a?adiendo información a la caja de resultados: if(au.equals(ag)) { puntosusuario++; taResultado.appendText("???El usuario ha adivinado el número aleatorio generado por la máquina!!!nn"); } if(auc.equals(ac)) { puntosusuario++; taResultado.appendText("???El usuario ha adivinado el número elegido por el PC!!!nn"); } if(ac.equals(ag)) { puntospc++; taResultado.appendText("???El PC ha adivinado el número aleatorio generado por la máquina!!!nn"); } if(acu.equals(au)) { puntospc++; taResultado.appendText("???El PC ha adivinado el número elegido por el usuario!!!nn"); } // Pasamos a cadenas los puntos de ambos para mostrar el marcador actual: String puntosu = Integer.toString(puntosusuario); String puntosc = Integer.toString(puntospc); taResultado.appendText("Marcador:n" + "Usuario: "+puntosu+"n" + "Ordenador: "+puntosc+"nn"); // Cuando uno de los 2 llega a 10 y gana lo mostramos y cerramos el programa tras 5 segundos: if(puntosusuario == 10) { taResultado.appendText("???El usuario gana la partida!!!"); ///////////////////////////////////////// } if(puntospc == 10) { taResultado.appendText("???El PC gana la partida!!!"); ///////////////////////////////////////// } } @Override public void initialize(URL url,ResourceBundle rb) { // TODO } } 解决方法
您可以使用
System.exit(...) 退出,使用普通的旧Java
Timer 将其安排10秒钟.代码很小:
new Timer().schedule(new TimerTask() { public void run () { System.exit(0); } },10000); // now show message. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |