一个课程只有一个主题(CoursetType)和一个数字(courseNumType)。
我已经在下面粘贴了两个类的完整代码,但我认为问题是我的action listener创建了一个新对象,然后调用了一个dropClass()方法(实际上是一个list.remove())。但我不确定如何在不创建新对象的情况下传递正确的值。
JButton dropButton = new JButton("Drop Course");
dropButton.setBounds(120, 210, 160, 20);
dropButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Student studentobj = new Student(fNametxt.getText(), lNametxt.getText(),stuEmailtxt.getText(), dobtxt.getText(), stuList);
Course courseobj = new Course (courseTypeBox.getSelectedItem().toString(), (int)courseNumTypeBox.getSelectedItem());
studentobj.dropCourse(courseobj);
}
});
这是我创建GUI和实现动作侦听器的主要方法和类:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class SIS_GUI {
public SIS_GUI() {
createStudentGUI();
}
private void createStudentGUI() {
// TODO Auto-generated method stub
List<Course> stuList = new ArrayList<>();
JFrame jframe = new JFrame("Tom's Wonderful Student Information System");
jframe.setLayout(new GridLayout(8, 4));
JLabel fName = new JLabel("Enter Student First Name");
fName.setBounds(10, 50, 150, 20);
JTextField fNametxt = new JTextField(" ");
fNametxt.setBounds(150, 50, 150, 20);
JLabel lName = new JLabel("Enter Student Last Name");
lName.setBounds(10, 150, 150, 20);
JTextField lNametxt = new JTextField(" ");
lNametxt.setBounds(350, 150, 150, 20);
JLabel stuEmail = new JLabel("Enter Student Email");
stuEmail.setBounds(10, 90, 150, 20);
JTextField stuEmailtxt = new JTextField(" ");
stuEmailtxt.setBounds(200, 90, 150, 20);
JLabel dob = new JLabel("Enter Date of Birth");
dob.setBounds(10, 130, 150, 20);
JTextField dobtxt = new JTextField(" ");
dobtxt.setBounds(200, 130, 150, 20);
JLabel course = new JLabel("Select Course Name");
course.setBounds(10, 170, 150, 20);
String[] courseType = { "Biology", "Computer Science", "Philosophy" };
JComboBox courseTypeBox = new JComboBox(courseType);
//courseTypeBox.setBounds(200, 170, 150, 20);
JLabel courseNum = new JLabel("Select Course Number");
course.setBounds(10, 170, 150, 20);
Integer[] courseNumType = { 101, 202, 303 };
JComboBox courseNumTypeBox = new JComboBox(courseNumType);
//courseNumTypeBox.setBounds(200, 170, 150, 20);
JButton addButton = new JButton("Add Course");
addButton.setBounds(120, 210, 160, 20);
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//String selectedCourseName = courseTypeBox.getSelectedItem().toString();
//int selectedCourseNum = (int) courseNumTypeBox.getSelectedItem();
Student studentobj = new Student(fNametxt.getText(), lNametxt.getText(),stuEmailtxt.getText(), dobtxt.getText(), stuList);
Course courseobj = new Course(courseTypeBox.getSelectedItem().toString(), (int)courseNumTypeBox.getSelectedItem());
studentobj.addCourse(courseobj);
}
});
JButton dropButton = new JButton("Drop Course");
dropButton.setBounds(120, 210, 160, 20);
dropButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//String selectedCourseName = courseTypeBox.getSelectedItem().toString();
//int selectedCourseNum = (int)courseNumTypeBox.getSelectedItem();
Student studentobj = new Student(fNametxt.getText(), lNametxt.getText(),stuEmailtxt.getText(), dobtxt.getText(), stuList);
Course courseobj = new Course (courseTypeBox.getSelectedItem().toString(), (int)courseNumTypeBox.getSelectedItem());
studentobj.dropCourse(courseobj);
}
});
JButton viewButton = new JButton("View Courses");
viewButton.setBounds(120, 210, 160, 20);
viewButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Student studentobj = new Student(fNametxt.getText(), lNametxt.getText(),stuEmailtxt.getText(), dobtxt.getText(), stuList);
System.out.println(studentobj.toString());
}
});
jframe.add(fName);
jframe.add(fNametxt);
jframe.add(lName);
jframe.add(lNametxt);
jframe.add(stuEmail);
jframe.add(stuEmailtxt);
jframe.add(dob);
jframe.add(dobtxt);
jframe.add(course);
jframe.add(courseTypeBox);
jframe.add(courseNum);
jframe.add(courseNumTypeBox);
jframe.add(addButton);
jframe.add(dropButton);
jframe.add(viewButton);
jframe.setSize(1000, 800);
jframe.setVisible(true);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new SIS_GUI();
}
}
import java.util.List;
public class Student {
private String fName;
private String lName;
private String email;
private String DOB;
private List<Course> courses;
public Student() {
}
public Student(String fName, String lName, String email, String dOB, List<Course> courses)
{
super();
this.fName = fName;
this.lName = lName;
this.email = email;
DOB = dOB;
this.courses = courses;
}
public void addCourse(Course course) {
courses.add(course);
}
public void dropCourse(Course course) {
int index = courses.indexOf(course);
courses.remove(index);
}
public List<Course> viewCourses() {
return courses;
}
public String getfName() {
return fName;
}
public String getlName() {
return lName;
}
public String getEmail() {
return email;
}
public String getDOB() {
return DOB;
}
public String toString() {
String str;
if(courses.size()>0) {
str = fName + " " + lName + "\nEmail address: " + email + "\nDate of birth: " + DOB
+ "\n";
for(int i=0; i < courses.size(); i++) {
str += courses.get(i).getCourseName() + " " + courses.get(i).getCourseID() +"\n";
}}
else
str = fName + " " + lName + "\nEmail address: " + email + "\nDate of birth: " + DOB
+ "\nis not registered for any classes";
return str;
}
课程类别:
public class Course {
private String courseName;
private int courseID;
//private int capacity;
public Course() {
}
public Course(String courseName, int courseID /*,int capacity*/) {
this.courseName = courseName;
this.courseID = courseID;
//this.capacity = capacity;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public int getCourseID() {
return courseID;
}
public void setCourseID(int courseID) {
this.courseID = courseID;
}
public boolean contains(Course course) {
// TODO Auto-generated method stub
return false;
}
public int indexOF(Course course) {
// TODO Auto-generated method stub
return 0;
}
// public int getCapacity() {
// return capacity;
// }
//
// public void setCapacity(int capacity) {
// this.capacity = capacity;
// }
}
因此,在讨论实际问题之前,我认为您可以写出一个备用的JFrame类,如下所示
public class StudentGUI extends JFrame implements ActionListener {
...
private void createStudentGUI() {
// TODO Auto-generated method stub
List<Course> stuList = new ArrayList<>();
...
JButton dropButton = new JButton("Drop Course");
dropButton.setBounds(120, 210, 160, 20);
dropButton.addActionListener(this);
...
}
public void actionPerformed(ActionEvent action) {
switch(action.getActionCommand()) {
case "Drop Course":
//do something
break;
default:
System.out.println("The action is not yet defined");
}
}
}
说完这话...您必须确保Course类正确地实现了它自己的equals方法,否则它将比较对象的地址,当然,由于您在drop button操作中调整了一个新的Course,对象的地址将不是相同的。
所以你会有
public class Course {
...
@Override
public boolean equals(Object o) {
if(o instance of Course) {
//set your own conditions like return this.courseId.equals(o.getCourseId);
}
}
}
问题内容: 是否可以将 删除 按钮添加到表中的单元格? 我有一个包含5列的表格,我想添加一个第6列。我希望第六列的每一行都有一个删除按钮。 示例行: | 10002 | 部分 金属| 001 | 是的 | 这样,用户只需单击按钮即可删除所有不需要的行。 我在表中有一个标记列,它是。我创建了一个可扩展的类。 我是否需要扩展另一个类,但要创建一个按钮而不是? 编辑 编辑 问题答案: 这是示例工作版本。
问题内容: 在遍历列表时,我想根据条件删除列表中的项。请参见下面的代码。 这给了我一个例外。 如何才能做到这一点? 问题答案: 您需要使用和调用上,而不是使用循环。
问题内容: 我正在尝试添加/删除表行。 这是我的代码: HTML表格 JavaScript 现在,如您所见,在我的表格中,我有文本字段和按钮。我想要的是: 仅重复行的结构。我现在无法执行此操作,因为innerHTM仅接收文本。如何插入文本框或标签? 文本字段的ID也应该不同,因为稍后我将检索这些值以将其放入数据库中。 我想放置一个函数以增加POI的数量 有人可以帮我吗? 问题答案: 您可以仅克隆具
我在母版页中有一个表 table border=“1”border style=“shown”width=“80%”id=“tbladdbirthdies”tr id=“tr”td asp:TextBox id=“txFirstName”runat=“server”asp:TextBox id=“txLastName”runat=“server”asp:DropDownList id=“dlDat
问题内容: 我正在尝试添加和删除被单击的li元素上的类。这是一个菜单,当我单击每个li项目时,我希望它获得该课程,而所有其他li项目都将其删除。因此,一次只有一个li项目上课。这就是我走了多远(见小提琴)。我不确定如何使“ about-link”从当前类开始,但是当单击其他li项之一时将其删除吗? 问题答案: 为什么不尝试这样的事情?
问题内容: 我正在尝试工作如何使用ngClick添加类。我已经上传了我的代码到plunker 这里点击。查看角度文档,我不知道应该怎么做。以下是我的代码片段。有人可以指引我正确的方向 控制者 问题答案: 您只需要将变量绑定到指令“ ng-class”,然后从控制器进行更改即可。这是如何执行此操作的示例: 这是在jsFiddle上工作的示例