Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JTextArea中的arraylist中显示元素_Java_Swing_User Interface_Arraylist_Jtextarea - Fatal编程技术网

Java 在JTextArea中的arraylist中显示元素

Java 在JTextArea中的arraylist中显示元素,java,swing,user-interface,arraylist,jtextarea,Java,Swing,User Interface,Arraylist,Jtextarea,我正在创建一个文字游戏,在这个游戏中,玩家必须使用给定单词中的字母尽可能多地造出单词。(示例:给出的单词是“大象”,因此可能的答案是喘息和帮助)。我想在文本框中显示正确答案。现在,唯一显示的是空白文本区域。 下面是将单词放入各自数组列表的代码: public void checkAnswers() { ArrayList<String> validAnswers = new ArrayList<String>(); ArrayList<String

我正在创建一个文字游戏,在这个游戏中,玩家必须使用给定单词中的字母尽可能多地造出单词。(示例:给出的单词是“大象”,因此可能的答案是喘息和帮助)。我想在文本框中显示正确答案。现在,唯一显示的是空白文本区域。 下面是将单词放入各自数组列表的代码:

public void checkAnswers() { 
    ArrayList<String> validAnswers = new ArrayList<String>();
    ArrayList<String> wrongAnswers = new ArrayList<String>();
    ArrayList<String> notFound = new ArrayList<String>();
    List<String> compare = new ArrayList<String>();

    if (r == 0){
    compare = arr1Sub;
    }
    else if (r == 1){
            compare = arr2Sub;
    }
    else if(r == 2){
            compare = arr3Sub;
    }
    else{
            compare.add("error");
            System.out.println(compare);
    }
    for (int i = 0; i < inputList.size(); i++){
        if (compare.contains(inputList.get(i))){ 
                validAnswers.add(inputList.get(i));
        }
        else if (!compare.contains(inputList.get(i))){
                wrongAnswers.add(inputList.get(i));
        }
        else{
                notFound.add(compare.get(i)); 
        }

    for(String s : validAnswers){
        txtvalidWords.append(s.toString()); 
    }  
public void checkAnswers(){
ArrayList validAnswers=新的ArrayList();
ArrayList ErrorAnswers=新建ArrayList();
ArrayList notFound=新建ArrayList();
列表比较=新建ArrayList();
如果(r==0){
比较=arr1Sub;
}
else如果(r==1){
比较=arr2Sub;
}
else如果(r==2){
比较=arr3Sub;
}
否则{
比较。添加(“错误”);
System.out.println(比较);
}
对于(int i=0;i
以下是GUI的代码:

public void CheckAnswersGUI(){
    JPanel answersPanel = new JPanel(); 
    JPanel wrongPanel = new JPanel(); 
    JPanel possiblePanel = new JPanel(); 
    container = new JPanel(); 

    lblvalid = new JLabel("Valid Answers"); 
    txtvalidWords = new JTextArea("",30,30); 
    lblwrong = new JLabel("Wrong Answers"); 
    txtwrongWords = new JTextArea("",30,30); 
    lblpossible = new JLabel("Answers Not Found"); 
    txtpossibleWords = new JTextArea("",30,30); 

    btnPlayAgain = new JButton("Play Again"); 
    btnPlayAgain.addActionListener(this);  

    FlowLayout checkLayout = new FlowLayout(); 
    answersPanel.setLayout(checkLayout); 
    wrongPanel.setLayout(checkLayout); 
    possiblePanel.setLayout(checkLayout);

    container.setLayout(new BoxLayout(container,BoxLayout.X_AXIS)); 
    container.add(answersPanel); 
    container.add(wrongPanel); 
    container.add(possiblePanel);  
    container.add(btnPlayAgain);   

    inputList = new ArrayList<String>();
    String text = inputWords.getText(); 
    String[] words = text.split("\\s"); 

    for (String word : words){
        inputList.add(word); 
    }

    answersPanel.add(lblvalid);  
    answersPanel.add(txtvalidWords); 
    wrongPanel.add(lblwrong); 
    wrongPanel.add(txtwrongWords); 
    possiblePanel.add(lblpossible); 
    possiblePanel.add(txtpossibleWords); 
    getContentPane().add(container); 

    setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo (null);
    setSize (700,500);
    setTitle ("Check Your Answers");
    setVisible(true);
}   

    }
public void CheckAnswersGUI(){
JPanel answersPanel=新的JPanel();
JPanel错误面板=新的JPanel();
JPanel possiblePanel=新的JPanel();
container=newjpanel();
lblvalid=新的JLabel(“有效答案”);
txtvalidWords=新的JTextArea(“,30,30);
lblwrong=新JLabel(“错误答案”);
txtErrorWords=新的JTextArea(“,30,30);
lblpobsible=新的JLabel(“未找到答案”);
txtpossibleWords=新的JTextArea(“,30,30);
btnPlayAgain=新的JButton(“再次播放”);
btnPlayAgain.addActionListener(此);
FlowLayout checkLayout=新的FlowLayout();
回答设置布局(检查布局);
错误面板。设置布局(检查布局);
可能面板设置布局(检查布局);
container.setLayout(新的BoxLayout(container,BoxLayout.X_轴));
容器。添加(应答器spanel);
容器。添加(错误面板);
容器。添加(可能的面板);
container.add(btnPlayAgain);
inputList=新的ArrayList();
字符串文本=inputWords.getText();
String[]words=text.split(\\s”);
for(字符串字:字){
输入列表。添加(word);
}
回答spanel.add(lblvalid);
回答spanel.add(txtvalidWords);
错误面板。添加(lblwrong);
错误面板。添加(txtErrorWords);
可能面板添加(LBL可能);
possiblePanel.add(txtpossibleWords);
getContentPane().add(容器);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(空);
设置大小(700500);
setTitle(“检查您的答案”);
setVisible(真);
}   
}

发生的事情是,我认为您试图在没有文本的情况下从文本区域获取输入。您的构造函数中有这个

String text = inputWords.getText(); 
没有初始文本,因此将不起任何作用

我假设在你的
actionPerformed
中,就是你调用
checkAnswers
的地方,所以我将提供这个建议。从你的构造函数中获取代码,并将其放入你的
actionPerformed()

checkAnswers()
中,应该在方法中创建该类的实例,以便引用这些答案

public void checkAnswer(){
    Answers ans = new Answers();

    ArrayList<String> answers = ans.getAnswer();
}
public void checkAnswer(){
答案ans=新答案();
ArrayList answers=ans.getAnswer();
}
现在你可以用其他班级的答案进行比较

编辑2:

公共类游戏{
private ArrayList validAnswers=new ArrayList();
private ArrayList ErrorAnswers=新建ArrayList();
private ArrayList notFound=新建ArrayList();
公共阵列列表getValidAnswers(){
返回有效应答者;
}
公共数组列表getErrorAnswers(){
回程绞纱机;
}
公共ArrayList getNotFound(){
返回未找到;
}
公共无效检查答案(字符串文本){
//从texArea获取文本并使用该文本
//我想我会填充你的比较列表
}
}
公共类GUI扩展了JPanel{
私有JTextArea inputTextArea=新JTextArea();
JButton checkAnswers=新JButton(“Check Answers”);
PlayGame=新的PlayGame();
公共图形用户界面{
...
checkAnswers.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
String text=inputTextArea.getText();
游戏。核对答案(文本);
ArrayList validAnswers=game.getValidAnswers();
ArrayList ErrorAnswers=game.getErrorAnswers();
ArrayList notFound=game.getNotFound();
//代码将这些列表附加到相应的文本区域
}
});
}
}

你把
检查答案称为哪里?
?谢谢!但是,我仍然无法显示文本。现在,我在一个类中有答案,然后在另一个类中有GUI。我很难准确地找出如何将inputList与另一个类中的answers arrayList进行比较,然后只显示正确的答案。我认为您的
检查答案()
您应该创建一个包含答案的类实例。然后在方法中引用这些列表看看我的编辑。也许您想这样做。谢谢!我认为这应该可以。我有3个JTextArea需要显示不同的ArrayList。我正在考虑在getAnswer中使用条件语句方法,例如,如果是JTextArea 1,则显示ArrayList 1。有没有办法做到这一点?我不确定我是否理解条件的目的和必要性。您能更具体一点吗?
public class Answers {
    private ArrayList<String> answers;

    public ArrayList<String> getAnswers(){
        return answers;
    }
}
public void checkAnswer(){
    Answers ans = new Answers();

    ArrayList<String> answers = ans.getAnswer();
}
public class PlayGame {
    private ArrayList<String> validAnswers = new ArrayList<String>();
    private ArrayList<String> wrongAnswers = new ArrayList<String>();
    private ArrayList<String> notFound = new ArrayList<String>();

    public ArrayList<String> getValidAnswers(){
        return validAnswers;
    }

    public ArrayList<String> getWrongAnswers(){
        return wringAnswers;
    }

    public ArrayList<String> getNotFound(){
        return notFound;
    }

    public void checkAnswers(String text) {
        // get text from texArea and use that text 
        // I'm guess to populate your compare list
    }
}

public class GUI extends JPanel {
    private JTextArea inputTextArea = new JTextArea();
    JButton checkAnswers = new JButton("Check Answers");

    PlayGame game = new PlayGame();

    public GUI {
        ...

       checkAnswers.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent e){
               String text = inputTextArea.getText();

               game.checkAnswers(text);

               ArrayList<String> validAnswers = game.getValidAnswers();
               ArrayList<String> wrongAnswers = game.getWrongAnswers();
               ArrayList<String> notFound = game.getNotFound();

               // code to append these lists to their corresponding text areas
           }
       });
    }
}