Java 与GUI连接
晚上好,我正在尝试做一个简短的文本冒险。我的问题是我不知道如何将GUI与故事联系起来。 到目前为止,我所做的只是简单的“按下此按钮时,更改此标签”之类的事情,但现在我必须从GUI获取文本,这样故事才能继续,这就是我的问题开始的地方。 获取这些值很容易,但我不知道如何正确使用它们,故事应该等待输入,然后根据输入继续。控制台上的一切工作正常,我不知道如何继续 编辑: 所以我的问题是如何使用textfield输入在故事中前进 有三件事我不知道,我想学习: 1.暂停报道,直到有人输入 2.使用此输入权限在故事中前进 3.在标签中显示正确的故事 这是我的两堂课Java 与GUI连接,java,swing,user-interface,Java,Swing,User Interface,晚上好,我正在尝试做一个简短的文本冒险。我的问题是我不知道如何将GUI与故事联系起来。 到目前为止,我所做的只是简单的“按下此按钮时,更改此标签”之类的事情,但现在我必须从GUI获取文本,这样故事才能继续,这就是我的问题开始的地方。 获取这些值很容易,但我不知道如何正确使用它们,故事应该等待输入,然后根据输入继续。控制台上的一切工作正常,我不知道如何继续 编辑: 所以我的问题是如何使用textfield输入在故事中前进 有三件事我不知道,我想学习: 1.暂停报道,直到有人输入 2.使用此输入权限
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ö?");
}
}
包装位置;
导入java.util.ArrayList;
导入java.util.Scanner;
导入xmlModul.XmlLoader;
公共类GameTile00扩展了超级位置{
XmlLoader=新的XmlLoader();
GameTile01 next=新的GameTile01(“Raum2”、“zweiter Raum”);
//发明家艾因弗根
ArrayList items=新建ArrayList();
扫描仪s=新的扫描仪(System.in);
public GameTile00(字符串名称,字符串Beschreibung){
super(名称:Beschreibung);
}
@凌驾
公开讲故事{
故事1();
}
公共图书馆1(){
String story1=“在gänzlich unbekannt ist.中的wachst auf
+“所有人都是我的出纳员,我是凯克森,我是施吕塞尔”
”
+“Deine Möglichkeiten sind begrenzt,schließt du die tür auf,order isst du die Kekse?(埃森/奥夫施利恩)”;
System.out.println(故事1);
字符串eingabe=s.next();
if(eingabe.equalsIgnoreCase(“埃森”)){
System.out.println(“Du fühlst dic zwar erfrischt,jedoch拥有Du jetzt durst and sitzt im Raum…”);
}
否则如果(eingabe.equalsIgnoreCase(“Aufschließen”)){
系统输出打印(“在nächsten raum中的数据和数据”);
接下来,讲故事();
}
否则{
System.out.println(“hö?”);
}
}
及
包装位置;
导入java.util.ArrayList;
导入java.util.Scanner;
导入xmlModul.XmlLoader;
公共类GameTile01扩展了超级位置{
XmlLoader=新的XmlLoader();
//发明家艾因弗根
GameTile02 west=新GameTile02(“劳姆西部”、“西劳姆”);
GameTile03 ost=新GameTile03(“Raum ost”、“ost Raum”);
ArrayList items=新建ArrayList();
扫描仪s=新的扫描仪(System.in);
public GameTile01(字符串名称,字符串Beschreibung){
super(名称:Beschreibung);
}
@凌驾
公开讲故事{
故事1();
}
公共图书馆1(){
String story1=“我是新劳姆,我是施瓦兹·多克在利希切特找到的最好的朋友
”
+“你是我的朋友,我是你的朋友”(威斯汀,奥斯汀);
System.out.println(故事1);
字符串eingabe=s.next();
如果(eingabe.equalsIgnoreCase(“Osten”)){
System.out.println(“sich wohl im osten befinet”);
ost.讲故事();
}
否则,如果(eingabe.equalsIgnoreCase(“Westen”)){
System.out.println(“sich wohl im westen befindet”);
讲故事();
}
否则{
System.out.println(“hö?”);
}
}
我的GUI只是一个获取输入的文本字段,一个发送输入的按钮和一个显示故事的标签
提前谢谢你。你的要求并不难实现 @1.您可以为此使用布尔值。如果其值为true,则说明故事正在运行,如果为false,则说明故事没有运行。可能是一个eventhandler,在选择textfield时将布尔值设置为false @2不完全确定,我假设你的意思是,你根据一系列值、int或字符串测试输入值,这可能取决于需要的答案 @3 Label类具有用于此的内置函数。为此,它将是Label.setText(字符串)
我希望这对您有所帮助,如果您需要有关特定代码部分的帮助,请发布这些代码。如果您不知道如何开始,请访问在线,这里有很多关于如何处理按钮事件和类似事件的教程,旨在教您一些东西。您不知道如何继续,那么您的问题是什么?对不起,我很抱歉我不知道如何把它放在一个问题中,我希望我能把它弄清楚一点——控制反转。看看ActionListener。如果你利用它,你就不必把故事搁置,因为你给了用户控制权。在他输入后,你得到控制权和输入。你可以用它来更新故事托利出现在屏幕上。谢谢你,我没有想到布尔运算我知道.setText()函数我不是那么新,但它不会出现这是我的问题。非常感谢你
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ö?");
}
}