簡體   English   中英

無法將數組打印到JTextArea

[英]Trouble printing an array to a JTextArea

該項目的目標是創建四個類:Student類,GradStudent類,Manager類和GUI類。 在GUI中,有兩個單選按鈕:一個用於學生,一個用於GradStudent。 根據選擇哪一個,Manager類應該負責使用兩個數組來創建和存儲Student或GradStudent對象。 我還在GUI中添加了一個按鈕,該按鈕應該將Student數組打印到JTextArea,但這是我遇到問題的地方。 我收到錯誤消息“無法在原始類型int上調用toString()”。 我知道為什么會這樣,但是我不知道如何解決。 任何幫助將不勝感激。 謝謝!

GUI類

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;

public class GUI extends JFrame {
    private JRadioButton jrbStudent = new JRadioButton("Student");
    private JRadioButton jrbGraduate = new JRadioButton("Graduate");
    private JTextField name = new JTextField(20);
    private JTextField address = new JTextField(20);
    private JTextField balance = new JTextField(20);
    private JTextField major = new JTextField(20);
    private JButton jbtSubmit = new JButton("Submit");
    private JTextArea echoStudent = new JTextArea();

    private JButton printStudentNames = new JButton("Print Student's Names");
    private JButton printGradStudentNames = new JButton(
            "Print Graduate Student's Names");
    private JButton calcBalance = new JButton(
            "Calculate Average Balance of All Students");
    private JButton compSciMajor = new JButton(
            "Displays Computer Science Major Students");

    private Manager m1 = new Manager();

    public GUI() {

        // Creates panel P1 and adds the components
        JPanel p1 = new JPanel(new GridLayout(9, 1, 10, 10));
        p1.add(new JLabel("Name: "));
        p1.add(name);
        p1.add(new JLabel("Address: "));
        p1.add(address);
        p1.add(new JLabel("Balance: "));
        p1.add(balance);
        p1.add(new JLabel("Major: "));
        p1.add(major);
        p1.add(jrbStudent);
        p1.add(jrbGraduate);
        p1.add(new JLabel("Submit Button: "));
        p1.add(jbtSubmit);
        p1.add(printStudentNames);
        p1.add(printGradStudentNames);
        p1.add(calcBalance);
        p1.add(compSciMajor);
        p1.add(new JLabel("Submitted Text: "));

        // Creates a radio-button group to group both buttons
        ButtonGroup group = new ButtonGroup();
        group.add(jrbStudent);
        group.add(jrbGraduate);

        // Adds the panel and text area to the frame
        add(p1);
        p1.add(echoStudent);
        echoStudent.setEditable(false);

        // Creates a listener and registers it with the submit button
        SubmitListener l1 = new SubmitListener();
        jbtSubmit.addActionListener(l1);

        // Creates a listener and registers it with the radio buttons
        JRBListener l2 = new JRBListener();
        jrbStudent.addActionListener(l2);
        jrbGraduate.addActionListener(l2);

        // Creates a listener and registers it with the PrintStudentNames button
        StudentListener l3 = new StudentListener();
        printStudentNames.addActionListener(l3);
    }

    // Class to handle the submit button
    class SubmitListener implements ActionListener {
        public void actionPerformed(ActionEvent a) {
            Student[] students = new Student[50];
            int arrayLocation = 0;

            Student student1 = new Student(name.getText(), address.getText(),
                    balance.getText(), major.getText());
            // Checks remaining array space
            if (arrayLocation < 50) {
                students[arrayLocation] = student1;
                ++arrayLocation;
            }
            // Echos back entered text while storing the previous text
            echoStudent.setText(echoStudent.getText() + "\n"
                    + student1.toString());
        }
    }

    // Class to handle the radio buttons
    class JRBListener implements ActionListener {
        public void actionPerformed(ActionEvent b) {
            if (b.getSource() == jrbStudent) {
                m1.addStudent(name.getText(), address.getText(),
                        balance.getText(), major.getText());
                echoStudent
                        .setText("Created Student: \n" + m1.getLastStudent());
            }

            if (jrbGraduate.isSelected()) {
                m1.addGradStudent(name.getText(), address.getText(),
                        balance.getText(), major.getText());
                echoStudent.setText("Created Graduate Student: \n"
                        + m1.getLastGradStudent());
            }
        }
    }

    class StudentListener extends Manager implements ActionListener {
        public void actionPerformed(ActionEvent c) {

            echoStudent.setText(counter1.toString());

        }

    }

    public static void main(String[] args) {
        GUI frame = new GUI();
        frame.setTitle("Information Interface");
        frame.setSize(1200, 900);
        frame.setLocationRelativeTo(null); // Center the frame
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

    }

}

經理班

public class Manager {
    public Student[] students = new Student[50];
    public int counter1 = 0;

    private GradStudent[] gradStudents = new GradStudent[50];
    private int counter2 = 0;

    public Manager() {

    }

    public void addStudent(String name, String address, String balance, String major) {
        Student student1 = new Student(name, address, balance, major);
        students[counter1] = student1;
                counter1++;
    }
    public String getLastStudent() {
        return "Student added: " + students[counter1-1] +"\n";
    }

    public void addGradStudent(String name, String address, String balance, String major) {
        GradStudent student2 = new GradStudent(name, address, balance, major);
        gradStudents[counter2] = student2;
                counter2++;
    }
    public String getLastGradStudent() {
        return "Graduate Student added: " + gradStudents[counter2-1] +"\n";
    }


}

無法在原始類型int上調用toString()

采用

Integer.toString(counter1);

您也可以嘗試將int轉換為String

 String.valueOf(counter1);

或者您也可以嘗試Integer

 new Integer(counter1).toString();

或使用

 Integer.valueOf(counter1).toString();

- 編輯 -

根據您的最后評論,這里是打印JTextArea中所有學生的姓名的代碼

class StudentListener extends Manager implements ActionListener {
    public void actionPerformed(ActionEvent c) {

        StringBuilder builder=new StringBuilder();
        for(int i=0;i<counter1;i++){
            builder.append(m1.students[i].name);
        }
        echoStudent.setText(builder.toString());
    }
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM