2
所以我需要做的就是使用JTextField獲取用戶輸入的字符串形式,而我能做到這一點的一部分,我遇到了麻煩從方法的字符串到別處分析它在節目中,這裏是我到目前爲止有:Java:使用ActionListener,我需要從文本字段獲取用戶輸入並使用它,我遇到了問題
import javax.swing.* ;
import java.awt.event.* ;
import java.util.* ;
class Games extends JFrame implements ActionListener
{
JPanel pnl = new JPanel() ;
JTextField input = new JTextField(38) ;
JTextArea output = new JTextArea(6, 37) ;
JScrollPane pane = new JScrollPane(output) ;
String inputString ;
public Games()
{
super("Text Based RPG") ;
setSize(600,200) ;
setDefaultCloseOperation(EXIT_ON_CLOSE) ;
output.setLineWrap(true) ;
output.setWrapStyleWord(true) ;
pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS) ;
output.setEditable(false) ;
pane.getVerticalScrollBar().setValue(100); //scrollbar always at bottom
input.requestFocus() ;
/*Edit: Should I call for the input string here, e.g. output.append(inputString)
i get the compilation error message:
Games.java:29: error: cannot find symbol
output.append(inputString) ;
^
symbol: variable inputString
location: class Games
*/
add(pnl) ;
pnl.add(pane) ;
pnl.add(input) ;
input.addActionListener(this) ;
setVisible(true) ;
}
public void actionPerformed(ActionEvent event)
{
inputString = input.getText() ;
input.setText("") ;
}
/*The string i need to analyse is inputString, but I cannot, get it out of this method
any help you guys can give me would be greatly appreciated. */
public static void main(String[] args)
{
Games gui = new Games() ;
}
}
**********************************
try
{
a = reader.readLine() ;
}
catch (IOException e)
{
System.out.println("An Input Error Has Occured") ;
}
if (a.indexOf("hide") != -1) switchvariable = 'b' ;
if ((a.indexOf("exit") != -1) || (a.indexOf("leave") != -1) || (a.indexOf("out") != -1)) switchvariable = 'a' ;
if ((a.indexOf("exit") == -1) && (a.indexOf("hide") == -1) && (a.indexOf("leave") == -1) && (a.indexOf("out") == -1)) switchvariable= 'c' ;
String outcome = "" ;
switch (switchvariable)
{
case 'a' : outcome = "You exit the tavern to be discovered by\na group of bandits!\n" ; i = -1 ; break ;
case 'b' : outcome = "You hide behind the bar for 10 minutes until\nyou can no longer hear the group." ; i = -1 ; break ;
case 'c' : outcome = "You must choose between the two given options, exit the tavern, or hide." ; break ; // the variable i will still be greater
//than 1 so the loop will continue until you reach an agreeable option, which in this case is either hiding, or addressing the group of people
}
System.out.println(outcome) ;
我會非常喜歡做的就是使用文本框對於用戶輸入,所以我需要做的是將文本放在輸出textarea,然後這應該根據用戶輸入更改,我想要使用的代碼示例顯示在下面的asterixes
對不起,我在output.append(inputString)中寫入時可能會誤導你,而你給出的解決方案是正確的,這不是我要找的。我需要能夠將inputString從方法中拉出來以便與indexOf運算符一起使用,如果您知道如何執行此操作,將不勝感激:) – user1913822
這個想法是將用戶的數據存儲在變量中,但在actionPerformed方法中不可能做到這一點,因爲每次用戶按下回車鍵時,方法get中的所有內容都會放入,這顯然不是預期的結果。 – user1913822
從'actionPerformed()'方法內調用'indexOf()'方法,或將inputString作爲參數傳遞給另一個調用'indexOf()'的方法。將輸入字符串存儲在變量中是一個壞主意。如果你不明白,那麼編輯你的問題,並詳細說明你真正想做什麼。 –