📄 coursetablemodel.java
字号:
package org.signsmile.view.course;
import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Vector;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import org.minjey.cjsjk.core.ModelManager;
import org.minjey.cjsjk.core.SysDict;
import org.minjey.cjsjk.model.Course;
import org.minjey.cjsjk.model.ExamType;
import org.minjey.cjsjk.model.Major;
import org.minjey.cjsjk.util.OrderFactory;
import org.signsmile.view.MainFrame;
import org.signsmile.view.util.CourseComparator;
public class CourseTableModel extends AbstractTableModel implements
Serializable, TableModelListener {
private static final long serialVersionUID = 1L;
private ModelManager modelManager;
private CourseTable table;
private Major major;
protected Vector<Course> dataVector;
protected String[] columnIdentifiers = { "", "课程名称", "打印顺序", "学期", "学分",
"学时", "考核类型", "任课教师", "上课用书", "教材单价", "教材出版社", "备注" };
@SuppressWarnings("unchecked")
public CourseTableModel(Major major) {
this.major = major;
Vector<Course> courses = new Vector<Course>(
(Collection<? extends Course>) major.getCourses().values());
Comparator<Object> comp = new CourseComparator();
Collections.sort(courses, comp);
courses.add(new Course());
dataVector = courses;
modelManager = MainFrame.getModelManager();
this.addTableModelListener(this);
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == 0) {
return false;
} else {
return true;
}
}
@Override
public int getRowCount() {
return dataVector.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return getColumValue(dataVector.get(rowIndex), rowIndex, columnIndex);
}
@Override
public int getColumnCount() {
return columnIdentifiers.length;
}
@Override
public String getColumnName(int columnIndex) {
return columnIdentifiers[columnIndex];
}
private Object getColumValue(Course course, int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
if (rowIndex == dataVector.size() - 1)
return " * ";
break;
case 1:
return course.getName();
case 2:
return course.getCorder()<0?"":course.getCorder();
case 3:
return course.getSemester()<0?"":course.getSemester();
case 4:
return course.getPoint()<0?"":course.getPoint();
case 5:
return course.getLength()<0?"":course.getLength();
case 6:
return course.getExamtype();
case 7:
return course.getTeacher();
case 8:
return course.getBook();
case 9:
return course.getPrice()<0?"":course.getPrice();
case 10:
return course.getPublisher();
case 11:
return course.getBz();
}
return null;
}
@Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
if (rowIndex != dataVector.size() - 1) {
setColumValue(dataVector.get(rowIndex), value, rowIndex,
columnIndex);
} else {
setLastCoumValue(dataVector.get(rowIndex), value, rowIndex,
columnIndex);
}
fireTableCellUpdated(rowIndex, columnIndex);
}
private void setColumValue(Course course, Object value, int rowIndex,
int columnIndex) {
switch (columnIndex) {
case 1:
if (value.toString().trim() == null
|| "".equals(value.toString().trim())) {
JOptionPane.showMessageDialog(table, "课程名称不能为空,请输入课程名称!");
table.setfocus(rowIndex, columnIndex);
} else {
modelManager.beforeEdit(course);
course.setName(value.toString().trim());
modelManager.save(course);
}
break;
case 2:
try {
Integer cOrder = Integer.parseInt(value.toString().trim());
modelManager.beforeEdit(course);
course.setCorder(cOrder);
modelManager.save(course);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(table, "输入内容不合法,请重新输入!");
table.setfocus(rowIndex, columnIndex);
}
break;
case 3:
try {
Integer semester = Integer.parseInt(value.toString().trim());
modelManager.beforeEdit(course);
course.setSemester(semester);
modelManager.save(course);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(table, "输入内容不合法,请重新输入!");
table.setfocus(rowIndex, columnIndex);
}
break;
case 4:
if (value.toString().trim() != null
&& !"".equals(value.toString().trim())) {
try {
Float point = Float.parseFloat(value.toString().trim());
modelManager.beforeEdit(course);
course.setPoint(point);
modelManager.save(course);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(table, "输入内容不合法,请重新输入!");
table.setfocus(rowIndex, columnIndex);
}
} else {
modelManager.beforeEdit(course);
course.setPoint(-1f);
modelManager.save(course);
}
break;
case 5:
if (value.toString().trim() != null
&& !"".equals(value.toString().trim())) {
try {
Integer length = Integer.parseInt(value.toString().trim());
modelManager.beforeEdit(course);
course.setLength(length);
modelManager.save(course);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(table, "输入内容不合法,请重新输入!");
table.setfocus(rowIndex, columnIndex);
}
} else {
modelManager.beforeEdit(course);
course.setLength(-1);
modelManager.save(course);
}
break;
case 6:
modelManager.beforeEdit(course);
course.setExamtype((ExamType) value);
modelManager.save(course);
break;
case 7:
modelManager.beforeEdit(course);
course.setTeacher(value.toString().trim());
modelManager.save(course);
break;
case 8:
modelManager.beforeEdit(course);
course.setBook(value.toString().trim());
modelManager.save(course);
break;
case 9:
if (value.toString().trim() != null
&& !"".equals(value.toString().trim())) {
try {
Float price = Float.parseFloat(value.toString().trim());
modelManager.beforeEdit(course);
course.setPrice(price);
modelManager.save(course);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(table, "输入内容不合法,请重新输入!");
table.setfocus(rowIndex, columnIndex);
}
} else {
modelManager.beforeEdit(course);
course.setPrice(-0f);
modelManager.save(course);
}
break;
case 10:
modelManager.beforeEdit(course);
course.setPublisher(value.toString().trim());
modelManager.save(course);
break;
case 11:
modelManager.beforeEdit(course);
course.setBz(value.toString().trim());
modelManager.save(course);
break;
}
}
private void setLastCoumValue(Course course, Object value, int rowIndex,
int columnIndex) {
if (value.toString().trim() != null
&& !"".equals(value.toString().trim())) {
switch (columnIndex) {
case 1:
modelManager.beforeEdit(course);
course.setName(value.toString().trim());
setDefaultCourse(course);
modelManager.save(course);
dataVector.add(new Course());
break;
case 2:
try {
Integer cOrder = Integer.parseInt(value.toString().trim());
course.setCorder(cOrder);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(table, "输入内容不合法,请重新输入!");
table.setfocus(rowIndex, columnIndex);
}
break;
case 3:
try {
Integer semester = Integer
.parseInt(value.toString().trim());
course.setSemester(semester);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(table, "输入内容不合法,请重新输入!");
table.setfocus(rowIndex, columnIndex);
}
break;
case 4:
try {
Float point = Float.parseFloat(value.toString().trim());
course.setPoint(point);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(table, "输入内容不合法,请重新输入!");
table.setfocus(rowIndex, columnIndex);
}
break;
case 5:
try {
Integer length = Integer.parseInt(value.toString().trim());
course.setLength(length);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(table, "输入内容不合法,请重新输入!");
table.setfocus(rowIndex, columnIndex);
}
break;
case 6:
course.setExamtype((ExamType) value);
break;
case 7:
course.setTeacher(value.toString().trim());
break;
case 8:
course.setBook(value.toString().trim());
break;
case 9:
try {
Float price = Float.parseFloat(value.toString().trim());
course.setPrice(price);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(table, "输入内容不合法,请重新输入!");
table.setfocus(rowIndex, columnIndex);
}
break;
case 10:
course.setPublisher(value.toString().trim());
break;
case 11:
course.setBz(value.toString().trim());
break;
}
}
}
private void setDefaultCourse(Course course) {
if (course.getSemester() == null) {
course.setSemester(1);
}
if (course.getExamtype() == null) {
course.setExamtype((ExamType) SysDict.getEXAMTYPE().get(1));
}
if (course.getBook() == null) {
course.setBook("");
}
if (course.getBz() == null) {
course.setBz("");
}
if (course.getLength() == null) {
course.setLength(-1);
}
if (course.getMajor() == null) {
course.setMajor(major);
}
if (course.getPoint() == null) {
course.setPoint(-1f);
}
if (course.getPrice() == null) {
course.setPrice(-1f);
}
if (course.getPublisher() == null) {
course.setPublisher("");
}
if (course.getTeacher() == null) {
course.setTeacher("");
}
if (course.getCorder() == null) {
course.setCorder(OrderFactory.getNewOrder(major, course));
}
}
public void removeRow(int row) {
if (row != dataVector.size() - 1) {
Course course = dataVector.get(row);
modelManager.beforeEdit(course);
modelManager.delete(course);
dataVector.removeElementAt(row);
fireTableRowsDeleted(row, row);
}
}
public void setTable(CourseTable table) {
this.table = table;
}
@Override
public void tableChanged(TableModelEvent e) {
System.out.println("tableChanged");
}
public void setShowType() {
JComboBox jcbS = new JComboBox();
for (int i = 1; i <= major.getMajorlength().getLength(); i++) {
jcbS.addItem("" + i);
}
table.getColumn("学期").setCellEditor(new DefaultCellEditor(jcbS));
JComboBox jcbExamType = new JComboBox(SysDict.getEXAMTYPE().values()
.toArray());
table.getColumn("考核类型").setCellEditor(
new DefaultCellEditor(jcbExamType));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -