?? scoreeditor.java
字號:
package com.zdh.sms.editor;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import com.zdh.sms.model.Exam;
import com.zdh.sms.model.Student;
import com.zdh.sms.model.StudentScore;
import com.zdh.sms.system.EditorPartAdapter;
import com.zdh.sms.system.SmsContentProvider;
import com.zdh.sms.system.SmsFactory;
import com.zdh.sms.system.TableLabelProviderAdapter;
public class ScoreEditor extends EditorPartAdapter {
private Label examLabel; // 表頭的考試信息文字
private TableViewer tv; // 顯示成績的表格
public void init(IEditorSite site, IEditorInput input)
throws PartInitException {
super.init(site, input);
setPartName(input.getName()); // 更新編輯器的標題
}
public void createPartControl(Composite parent) {
Composite topComp = new Composite(parent, SWT.NONE);
topComp.setLayout(new FillLayout());
createTableViewer(topComp);
tv.setContentProvider(new SmsContentProvider());// 內容器
tv.setLabelProvider(new TableViewerLabelProvider());// 標簽器
// 由于創建時還沒有獲得查詢條件,所以不能setInpu
}
// 創建表格
private void createTableViewer(Composite parent) {
Composite tableComp = new Composite(parent, SWT.NONE);
tableComp.setLayout(new GridLayout());
examLabel = new Label(tableComp, SWT.NONE);
examLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
tv = new TableViewer(tableComp, SWT.MULTI | SWT.BORDER
| SWT.FULL_SELECTION);
Table table = tv.getTable();
table.setLayoutData(new GridData(GridData.FILL_BOTH));
table.setHeaderVisible(true); // 顯示表頭
table.setLinesVisible(true); // 顯示表格線
// 建立TableViewer中的列
TableLayout tLayout = new TableLayout();
table.setLayout(tLayout);
tLayout.addColumnData(new ColumnWeightData(10));
new TableColumn(table, SWT.NONE).setText("ID號");
tLayout.addColumnData(new ColumnWeightData(20));
new TableColumn(table, SWT.NONE).setText("學生");
tLayout.addColumnData(new ColumnWeightData(20));
new TableColumn(table, SWT.NONE).setText("成績");
}
// 更新表頭的考試信息,及獲得成績數據
public void setExam(Exam exam) {
// 設置表頭信息
String s0 = exam.getName();
String s1 = " 時間:" + exam.getDate();
String s2 = " 課程:" + exam.getCourse().getName();
String s3 = " 班級:" + exam.getSchoolClass().getName();
String s4 = " 監考:" + exam.getTeacher().getName();
String str = s0 + s1 + s2 + s3 + s4;
examLabel.setText(str);
// 獲得成績數據
tv.setInput(SmsFactory.getDbOperate().getStudentScore(exam));
}
// 標簽器
private final static class TableViewerLabelProvider extends
TableLabelProviderAdapter {
public String getColumnText(Object element, int columnIndex) {
StudentScore o = (StudentScore) element;
switch (columnIndex) {
case 0:
return o.getId().toString();
case 1:
Student student = o.getStudent();
if (student != null){
return student.getName();
}
return "";
case 2:
return String.valueOf(o.getScore());
}
return "";
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -