在Java面板上显示文本文件

时间:2011-05-12 21:58:27

标签: java

您好我想显示我的txt文件,但可能有问题!有帮助吗?这是我的代码:

    public class Display  extends Items{

 public int countLines(String filename){
        int lines = 0; //mporei na metrhsei mexri "int" grammes (~2.1 dis grammes)
        try {
            // Open the file that is the first command line parameter
            FileInputStream fstream = new FileInputStream(filename);
            // Get the object of DataInputStream
            DataInputStream in = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String strLine;
            //Read File Line By Line
            while ((strLine = br.readLine()) != null) {
                lines++;//metrhths grammwn/eggrafwn
            }
            //close input stream
        } catch (Exception e) {//Catch exception if any
            System.err.println("Error: " + e.getMessage());
        }

    return lines;}

 public String[] showAllRegisteredLessons(String filename, int size) {

        String[] temp = new String[size+1]; //mexri "size" kataxwrhseis ma8hmatwn dld (mege8os "int")

        try {
            int x = 0;
            // Open the file that is the first command line parameter
            FileInputStream fstream = new FileInputStream(filename);
            // Get the object of DataInputStream
            DataInputStream in = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String strLine;
            //Read File Line By Line

            while ((strLine = br.readLine()) != null) {
                //System.out.println(strLine.replace("#", " "));
                temp[x] = strLine;
                x++;
            }
            //close input stream
        } catch (Exception e) {//Catch exception if any
            System.err.println("Error: " + e.getMessage());
        }
        return temp;
    }

    public JPanel pinakas(String[] pinaka) {
        int sr = 0;
        //int ari8mos  =0;

        String[] COLUMN_NAMES = {"Κωδικός", "Ποσότητα", "Τιμή", "Περιγραφή", "Μέγεθος", "Ράτσα"};
//pio panw mporoume na pros8esoume ws prwto column to "#", wste na deixnei ton ari8mo ths ka8e kataxwrhshs
        DefaultTableModel modelM = new DefaultTableModel(COLUMN_NAMES, 0);
        JTable tableM = new JTable(modelM);
        JPanel mainPanel = new JPanel(new BorderLayout());
        mainPanel.add(new JScrollPane(tableM), BorderLayout.CENTER);

        Display disp = new Display();
        while (pinaka[sr] != null) // !!!!tha ektupwsei kai mia parapanw "/n" logo ths kataxwrhshs prwtou h teleytaiou mahmatos
        {
            String[] temp5 = disp.lineDelimiter(pinaka[sr],6, "#");
            Object[] doge = { temp5[0], temp5[1], temp5[2], temp5[3], temp5[4], temp5[5],temp5[6]};//edw mporoume sthn arxh na valoume to ari8mos gia na fainetai o ari8mos twn kataxwrhsewn
            modelM.addRow(doge);
            sr++;
            //ari8mos++;
        }

        return mainPanel;
    }

并在main()

 if(category31=="ΣΚΥΛΟΙ"){
                    Display disp= new Display();

                    int numberofline=disp.countLines("Dogss.txt");
                    String[] tempΜ1 = disp.showAllRegisteredLessons("Dogss.txt",numberofline);
                    //System.out.println(numberofline);

                    JOptionPane.showMessageDialog(null, disp.pinakas(tempΜ1), "Καταχωρημένα Kατοικίδια", JOptionPane.PLAIN_MESSAGE);

                     break;
                    }

我收到此错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
        at program.Display.pinakas(Display.java:83)
        at program.Main.main(Main.java:334)

1 个答案:

答案 0 :(得分:3)

我打赌问题出在以下几行(可能是第83行)。

 String[] temp5 = disp.lineDelimiter(pinaka[sr],6, "#");
 Object[] doge = { temp5[0], temp5[1], temp5[2], temp5[3], temp5[4], temp5[5],temp5[6]};

该数组只有6个元素。但是你正在访问第7个元素:

temp5[6]

这就是你得到 ArrayIndexOutOfBoundsException 的原因。