【发布时间】:2014-04-10 10:38:40
【问题描述】:
我遇到了一些严重的问题。
我必须编写的程序是一个 GUI,它本质上要求:
- 一门课程(例如:cpsc130)
- 名称(例如:计算机编程 2)
- 您获得的课程学分数量(例如 3)
- 还有你的成绩(例如 A、B)。
我对@987654322@s 不是很好,基本上我不知道我在用它做什么。我必须提供ArrayList 以获取信息
- 一个
ArrayList<Course>(实例变量)例如courseList,用于存储您添加的课程; - 四个内部
ActionListener类,每个类都实现了它的方法 执行的动作。具体来说, - AddCourseListener:读取输入并创建课程对象,添加课程 对象到 courseList 中,并将其附加到输出区域;
- CalGPAListener:从 courseList 中读取所有课程学分和成绩,添加 他们起来并计算整体GPA。你假设A是4,B是3,C是2, D 为 1,E 为 0。GPA = Sum(creditpoint)=totalCredits。例如(图 1)、你修了3门课:130(3学分,A级)、131(3学分,A级) B) 和 370(4 个学分,B 级),那么你的 GPA = (3*4+3*3+4*3)/(3+3+4) = 3.3。
- ResetInputListener:重置所有输入字段;
- ResetOutputListener:重置输出区域。
这些都是我需要的ActionListeners。到目前为止,我将向您展示我的代码。编译后它会显示所有Buttons 和TextAreas,ActionListeners 是我唯一需要帮助的。
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class DegreeWorksFrame extends JFrame {
private JLabel courseCodeLabel;
private JTextField courseCodeField;
private JLabel courseNameLabel;
private JTextField courseNameField;
private JLabel courseCreditLabel;
private JTextField courseCreditField;
private JLabel courseGradeLabel;
private JTextField courseGradeField;
private JTextArea resultArea;
private double sum =0;
private double totalCredits=0;
private String code = "";
private String name = "";
private String credit = "";
private String grade = "";
private String heading = ("Code\tName\tCredit\tGrade" + "\n");
private ArrayList<Course> courseList;
private JButton AddCourse;
private JButton CalculateGPA;
private JButton ResetInput;
private JButton ResetOutput;
private static final int AREA_ROWS = 15;
private static final int AREA_COLUMNS = 35;
private final int FRAME_HEIGHT =400;
private final int FRAME_WIDTH = 500;
final int FIELD_WIDTH = 30;
public DegreeWorksFrame() {
resultArea = new JTextArea(AREA_ROWS, AREA_COLUMNS);
resultArea.setText(heading);
resultArea.setEditable(false);
createTextField1();
createTextField2();
createTextField3();
createTextField4();
createButtonAddCourse();
createButtonCalculateGPA();
createButtonResetInput();
createButtonResetOutput();
createPanel();
setSize(FRAME_WIDTH, FRAME_HEIGHT);
}
private void createTextField1() {
courseCodeLabel = new JLabel("Enter Course Code: ");
courseCodeField = new JTextField(FIELD_WIDTH);
courseCodeField.setText(code);
}
private void createTextField2() {
courseNameLabel = new JLabel("Enter Course Name: ");
courseNameField = new JTextField(FIELD_WIDTH);
courseNameField.setText(name);
}
private void createTextField3() {
courseCreditLabel = new JLabel("Enter Course Credit: ");
courseCreditField = new JTextField(FIELD_WIDTH);
courseCreditField.setText(credit);
}
private void createTextField4() {
courseGradeLabel = new JLabel("Enter Course Grade: ");
courseGradeField = new JTextField(FIELD_WIDTH);
courseGradeField.setText(grade);
}
private void createButtonAddCourse() {
AddCourse = new JButton ("Add Courses: ");
ActionListener listener = new addCourseListener();
AddCourse.addActionListener(listener);
}
class addCourseListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
courseList = new ArrayList();
String receiveList = userList.get
}
}
private void createButtonCalculateGPA() {
CalculateGPA = new JButton ("Calculate GPA");
ActionListener listener = new addCourseListener();
AddCourse.addActionListener(listener);
}
class calculateGPAListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
}
}
private void createButtonResetInput() {
ResetInput = new JButton ("Reset Input");
ActionListener listener = new addCourseListener();
AddCourse.addActionListener(listener);
}
class resetInputListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
}
}
private void createButtonResetOutput() {
ResetOutput = new JButton ("Reset Output");
ActionListener listener = new addCourseListener();
AddCourse.addActionListener(listener);
}
class resetOutputListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
}
}
private void createPanel() {
JPanel panel = new JPanel();
panel.add(courseCodeLabel);
panel.add(courseCodeField);
panel.add(courseNameLabel);
panel.add(courseNameField);
panel.add(courseCreditLabel);
panel.add(courseCreditField);
panel.add(courseGradeLabel);
panel.add(courseGradeField);
//buttons
panel.add(AddCourse);
panel.add(CalculateGPA);
panel.add(ResetInput);
panel.add(ResetOutput);
//Scroll bar
JScrollPane scrollPane = new JScrollPane(resultArea);
panel.add(scrollPane);
add(panel);
}
}
【问题讨论】:
-
您的实际问题/疑问是什么?
-
我无法弄清楚如何让信息显示在 resultArea 中
-
我也不太明白如何实现actionlistener。
-
除了标题之外,我看不到 resultArea 在哪里显示任何信息?这可能是为什么? ActionListeners 通常用于用户点击/交互,最好的做法是look online。
-
我看到了一些关于附加或修改的东西?我正在尝试将它们添加到数组列表中并在结果区域中打印出来,但我不知道该怎么做。我有另一个类“Course”,它有代码、姓名、学分和等级的 getter 和 setter,我也不确定如何访问它们。
标签: java swing arraylist jpanel actionlistener