连接GUI

时间:2015-02-15 18:23:38

标签: java swing user-interface

晚上好,我正在尝试做一个简短的Textadventure我的问题是我不知道我应该如何将GUI与故事连接起来。 到目前为止,我所做的一切都很简单“当按下这个按钮时,改变这个标签”和这样的东西,但现在我必须从GUI获取文本以便故事可以继续,这就是我的问题开始的地方。 要获得这些值很简单,但我不知道如何正确使用它们,故事应该等待输入,然后继续根据输入在控制台上的一切工作,我不知道如何继续。

修改 所以我的问题是如何使用文本字段输入来推进故事 有三件事我不知道并且想学习:  1.暂停故事,直到输入为止  2.使用此输入权来推进故事  3.在标签中显示正确的故事

这是我的两个房间课程

package Locations;

import java.util.ArrayList;
import java.util.Scanner;
import xmlModul.XmlLoader;

public class GameTile00 extends SuperLocation{
   XmlLoader loader = new XmlLoader();
   GameTile01 next = new GameTile01("Raum2","zweiter Raum");
   //später character für inventar einfügen
   ArrayList<String> items = new ArrayList();

   Scanner s = new Scanner(System.in);

    public GameTile00(String Name, String Beschreibung) {
        super(Name, Beschreibung);
    }

    @Override
    public void Storytelling() {
    story1();    
    }

    public void story1(){
        String story1 = "<html>Du wachst auf in einem Raum der dir gänzlich unbekannt ist.<br>"
                      + "Alles was du siehst ist ein Teller mit Keksen, daneben ein Schlüssel<br>"
                      + "Deine Möglichkeiten sind begrenzt, schließt du die Tür auf, oder isst du die Kekse?(Essen/Aufschließen)";

        System.out.println(story1);
        String eingabe = s.next();
        if(eingabe.equalsIgnoreCase("Essen")){
            System.out.println("Du fühlst dich zwar erfrischt, jedoch hast du jetzt durst und sitzt im Raum...");
        }
        else if(eingabe.equalsIgnoreCase("Aufschließen")){
            System.out.println("du nimmst deinen Mut zusammen und gehst in den nächsten raum.");
            next.Storytelling();

        }
        else{
            System.out.println("hö?");
        }
    }

package Locations;

import java.util.ArrayList;
import java.util.Scanner;
import xmlModul.XmlLoader;

public class GameTile01 extends SuperLocation{
   XmlLoader loader = new XmlLoader();
   //später character für inventar einfügen
   GameTile02 west = new GameTile02("Raum west","West Raum");
   GameTile03 ost = new GameTile03("Raum ost","Ost Raum");
   ArrayList<String> items = new ArrayList();

   Scanner s = new Scanner(System.in);

public GameTile01(String Name, String Beschreibung) {
    super(Name, Beschreibung);
}

@Override
public void Storytelling() {
    story1();
    }

public void story1(){
    String story1 = "<html>im neuen raum ist es schwarz doch findest du durch ertasten einen Lichtschalter <br>"
            + "ein leerer raum erstreckt sich mit zwei türen, wohin gehst du? (westen, osten)</html>";

    System.out.println(story1);
    String eingabe = s.next();
    if(eingabe.equalsIgnoreCase("Osten")){
        System.out.println("Was sich wohl im osten befindet");
        ost.Storytelling();
    }
       else if(eingabe.equalsIgnoreCase("Westen")){
        System.out.println("was sich wohl im westen befindet");
        west.Storytelling();
    }
    else{
        System.out.println("hö?");
    }
}

我的GUI只有一个Textfield来获取输入,一个按钮来发送输入,一个Label来显示故事

提前谢谢。

1 个答案:

答案 0 :(得分:0)

你要问的并不难实现。

@ 1。你可以使用布尔值。如果它的值为真则故事正在运行,当故事为假时则故事未运行。可能是一个eventhandler,它在选择文本字段时将布尔值设置为false。

@ 2对此不完全确定,我假设您的意思是针对值列表,int或字符串测试输入值,它可能取决于所需的答案。

@ 3 Label类具有内置函数。为此,它将是label.setText(string);

我希望这对您有所帮助,如果您需要特定代码部分的帮助,请发布该代码。如果你不知道如何开始然后在网上看,有很多关于如何处理按钮事件和类似事情的教程,其灵魂目的是教你一些东西。