【问题标题】:Writing to JTextArea with data in an ArrayList - Java Swing使用 ArrayList 中的数据写入 JTextArea - Java Swing
【发布时间】:2014-07-28 22:39:54
【问题描述】:

我有几个从文本文件中获取数据的 ArrayList,我正在尝试将数据写入 JTextArea。我正在尝试通过以下方式写作:

public String write(){
        String details = "Program: " + programList + " Major: " + majorList + " Course: " + courseList + " Semester Available: " + semesterList+ " Examiner: " + nameList + " Moderator: " + moderatorList;
        return details;
    }

然而,JTextArea 中出现的只是Program: null Major: null etc.etc。

这是进行阅读的类:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;

public class FileIOManagement {

     private ArrayList<String> nameList = new ArrayList<String>();
     private ArrayList<String> courseList = new ArrayList<String>();
     private ArrayList<String> semesterList = new ArrayList<String>();
     private ArrayList<String> moderatorList = new ArrayList<String>();
     private ArrayList<String> programList = new ArrayList<String>();
     private ArrayList<String> majorList = new ArrayList<String>();



     public ArrayList<String> getNameList(){
         return this.nameList;
     }

     public ArrayList<String> getCourseList(){
         return this.courseList;
     }
      public ArrayList<String> getSemesterList(){
         return this.semesterList;
     }
      public ArrayList<String> getModeratorList(){
         return this.moderatorList;
     }
       public ArrayList<String> getProgramList(){
         return this.programList;
     }
        public ArrayList<String> getMajorList(){
         return this.majorList;
     }

     public void setNameList(ArrayList<String> nameList){
         this.nameList = nameList;
     }

     public void setCourseList(ArrayList<String> courseList){
         this.courseList = courseList;
     }    
      public void setSemesterList(ArrayList<String> semesterList){
         this.semesterList = semesterList;
     }    
      public void setModeratorList(ArrayList<String> moderatorList){
         this.moderatorList = moderatorList;
     }    

       public void setProgramList(ArrayList<String> programList){
         this.programList = programList;
     }    
        public void setMajorList(ArrayList<String> majorList){
         this.majorList = majorList;
     }    

     public FileIOManagement(){
         setNameList(new ArrayList<String>());
         setCourseList(new ArrayList<String>());
         setSemesterList(new ArrayList<String>());
         setModeratorList(new ArrayList<String>());
         setProgramList(new ArrayList<String>());
         setMajorList(new ArrayList<String>());
         readTextFile();
         getNameList();
         getCourseList();
     }

      private void readTextFile(){
         try{
             Scanner scan = new Scanner(new File("Course.txt"));

             while(scan.hasNextLine()){
             String line = scan.nextLine();            
             String[] tokens = line.split("~");
             String course = tokens[0].trim();
             String examiner = tokens[1].trim();
             String moderator = tokens[2].trim();
             String semester = tokens[3].trim();
             String program = tokens[4].trim();
             String major = tokens[5].trim();


             courseList.add(course);
             semesterList.add(semester);
             nameList.add(examiner);
             moderatorList.add(moderator);
             programList.add(program);
             majorList.add(major);
             HashSet hs = new HashSet();
             hs.addAll(nameList);
             nameList.clear();
             nameList.addAll(hs);
             Collections.sort(nameList);

         }
             scan.close();
         }
         catch (FileNotFoundException e){
             e.printStackTrace();
         }
     }



}

这是包含 JTextArea 的 GUI 类:

import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.util.Scanner;
import javax.swing.border.EmptyBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

public class AllDataGUI extends JFrame{   

    private String storeAllString="";
    private JButton saveCloseBtn = new JButton("Save Changes and Close");
    private JButton closeButton = new JButton("Exit Without Saving");
    private JFrame frame=new JFrame("Viewing All Program Details");
    private JTextArea textArea = new JTextArea(write());
    private final FileIOManagement fileManage = new FileIOManagement();
    private ArrayList<String> nameList = new ArrayList();
    private  ArrayList<String> courseList = new ArrayList();
    private  ArrayList<String> semesterList = new ArrayList();
    private  ArrayList<String> moderatorList = new ArrayList();
    private  ArrayList<String> majorList = new ArrayList();
    private  ArrayList<String> programList = new ArrayList();


     public AllDataGUI(){   
         getData();
         panels();  
            }



      public void getData(){      
      nameList = fileManage.getNameList();
      courseList = fileManage.getCourseList();
      semesterList = fileManage.getSemesterList();
      moderatorList = fileManage.getModeratorList();
      majorList = fileManage.getMajorList();
      programList = fileManage.getProgramList();
  }

    private JButton getCloseButton(){
        return closeButton;
     }     




    private void panels(){        
          JPanel panel = new JPanel(new GridLayout(1,1));
          panel.setBorder(new EmptyBorder(5, 5, 5, 5));
          JPanel rightPanel = new JPanel(new GridLayout(15,0,10,10));
          rightPanel.setBorder(new EmptyBorder(15, 5, 5, 10));
          JScrollPane scrollBarForTextArea=new JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
          panel.add(scrollBarForTextArea); 
          frame.add(panel);
          frame.getContentPane().add(rightPanel,BorderLayout.EAST);
          rightPanel.add(saveCloseBtn);
          rightPanel.add(closeButton);
          closeButton.addActionListener(new ActionListener() {
                  public void actionPerformed(ActionEvent e)
                    {
                        frame.dispose();

                    }
        });
          saveCloseBtn.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                saveBtn();                
                frame.dispose();

            }
        });
           frame.setSize(1000, 700);
           frame.setVisible(true);   
           frame.setLocationRelativeTo(null);

}

    private void saveBtn(){
        File file = null;
        FileWriter out=null;
        try {
            file = new File("Course.txt");
            out = new FileWriter(file);     
            out.write(textArea.getText());
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        JOptionPane.showMessageDialog(this, "File Successfully Updated");       

  }

     public String write(){
        String details = "Program: " + programList + " Major: " + majorList + " Course: " + courseList + " Semester Available: " + semesterList+ " Examiner: " + nameList + " Moderator: " + moderatorList;
        return details;
    }

}

我不确定我做错了什么。有什么想法吗?

【问题讨论】:

    标签: java swing arraylist


    【解决方案1】:

    它为空,因为字段尚未实例化。您在实例化这些字段之前调用了方法 write

    问题:

        private JTextArea textArea = new JTextArea(write());
    

    解决方案:

    你需要给这些字段一些值,然后调用 TextArea 的 setText

    //after you set all the fields values
    textArea.setText(write());
    

    【讨论】:

    • 实例化再次吸引了我。非常感谢。
    猜你喜欢
    • 2016-09-18
    • 2020-04-02
    • 2017-07-30
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多