加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何在文本区域元素中显示消息后关闭此JavaFX应用程序

发布时间:2020-12-15 04:18:12 所属栏目:Java 来源:网络整理
导读:我刚刚注册,因为我必须在明天早上2月24日提交一个 JavaFX应用程序,在尝试了很多东西之后,我无法为我的应用程序的最后部分找到解决方案. 我正在开发的应用程序是一个游戏,其中用户是一个玩家,PC是另一个玩家,“机器”是生成随机数的实体. 如果他们猜测即将到
我刚刚注册,因为我必须在明天早上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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读