package mini_1101_new;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTabbedPane;
class ViewFrame extends JFrame implements ActionListener{
private Information information;
private HashMap<String, Information> infoDB;
//메뉴바 세팅
private JMenuBar mb;
private JMenu newFile;
private JMenuItem new1;
private JMenuItem open;
private JMenuItem save;
private JMenu edit;
private JMenuItem tmp1;
private JMenuItem tmp2;
private JMenuItem tmp3;
//탭화면 세팅
JTabbedPane jtab = null;
JPanelBefore jpBefore = null;
JPanelName jpName = null;
JPanelList jpList = null;
JPanelText jpText = null;
JPanelClass c1 = null;
JPanelClass c2 = null;
JPanelClass c3 = null;
JPanelClass c4 = null;
JPanelClass c5 = null;
JPanelClass c6 = null;
JPanelClass c7 = null;
JPanelClass c8 = null;
JPanelClass c9 = null;
JPanelClass c10 = null;
//
public void createMenu() {
newFile = new JMenu("파일");
new1 = new JMenuItem("새 파일");
open = new JMenuItem("불러오기");
save = new JMenuItem("저장");
edit = new JMenu("편집");
tmp1 = new JMenuItem("1");
tmp2 = new JMenuItem("2");
tmp3 = new JMenuItem("3");
mb = new JMenuBar();
actionEventStart();
newFile.add(new1);
newFile.add(open);
newFile.add(save);
mb.add(newFile);
edit.add(tmp1);
edit.add(tmp2);
edit.add(tmp3);
mb.add(edit);
setJMenuBar(mb);
}
public void tabSetting() {
jtab = new JTabbedPane(); //탭화면 세팅
jpBefore = new JPanelBefore(information, this);
jpName = new JPanelName(information, this);
jpList = new JPanelList(information, this);
jpText = new JPanelText(information, this);
c1 = new JPanelClass(information, this, 1);
c2 = new JPanelClass(information, this, 2);
c3 = new JPanelClass(information, this, 3);
c4 = new JPanelClass(information, this, 4);
c5 = new JPanelClass(information, this, 5);
c6 = new JPanelClass(information, this, 6);
c7 = new JPanelClass(information, this, 7);
c8 = new JPanelClass(information, this, 8);
c9 = new JPanelClass(information, this, 9);
c10 = new JPanelClass(information, this, 10);
jtab.addTab("선행입력", jpBefore);
jtab.addTab("명렬입력", jpName);
jtab.addTab("평가항목입력", jpList);
jtab.addTab("성취번호 내용입력", jpText);
jtab.addTab("1반", c1);
jtab.addTab("2반", c2);
jtab.addTab("3반", c3);
jtab.addTab("4반", c4);
jtab.addTab("5반", c5);
jtab.addTab("6반", c6);
jtab.addTab("7반", c7);
jtab.addTab("8반", c8);
jtab.addTab("9반", c9);
jtab.addTab("10반", c10);
add(jtab);
}
public void actionEventStart() { //버튼에 액션이벤트 추가
tmp1.addActionListener(this);
}
public void initComponent() {
createMenu(); //메뉴바세팅
tabSetting(); //탭화면 세팅
}
public void initEvent() {
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == tmp1) {
//System.out.println("??");
// System.out.println(information.getGrade());
}
}
//생성자
public ViewFrame (String title) {
super(title);
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
super.setSize(screen.width/2, screen.height/2);
super.setLocation(screen.width/4, screen.height/4);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
information = new Information();
infoDB = new HashMap<String, Information>();
initComponent(); // 이 안에 tabsetting / 이 안에 각 패널들 생성 / 이 안에 information 객체 참조
initEvent();
super.setVisible(true);
}
}
public class Main {
public static final int MAXPEOPLE= 40;
public static void main(String[] args) {
ViewFrame vf = new ViewFrame("수행평가 관리프로그램 ver.1.0");
}
}
package mini_1101_new;
public class Information {
private String schoolName;
private String isMiddle;
private String grade;
private int totalClass;
private String subject;
private int exams;
private int[] ratings;
private int ratingSum;
private String[][] names;
private String[][] examRule;
private String[][] ratingText;
private String[][] result1;
private String[][] result2;
private String[][] result3;
private String[][] result4;
private String[][] result5;
private String[][] result6;
private String[][] result7;
private String[][] result8;
private String[][] result9;
private String[][] result10;
//1차
public String getSchoolName() {
return schoolName;
}
public void setSchoolName(String schoolName) {
this.schoolName = schoolName;
}
public String getIsMiddle() {
return isMiddle;
}
public void setIsMiddle(String isMiddle) {
this.isMiddle = isMiddle;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public int getTotalClass() {
return totalClass;
}
public void setTotalClass(int totalClass) {
this.totalClass = totalClass;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public int getExams() {
return exams;
}
public void setExams(int exams) {
this.exams = exams;
}
//2차
public int getRating(int i) {
return ratings[i];
}
public int getRatingsLength() {
return ratings.length;
}
public int[] getRatings() {
return ratings;
}
public void setRatings(int[] ratings) {
this.ratings = ratings;
}
//3차
public int getRatingSum() {
return ratingSum;
}
public void setRatingSum(int ratingSum) {
this.ratingSum = ratingSum;
}
//2차
public String[][] getNames() {
return names;
}
public void setNames(String[][] names) {
this.names = names;
}
public String getName(int row, int column) {
return names[row][column];
}
public String[][] getExamRule() {
return examRule;
}
public void setExamRule(String[][] examRule) {
this.examRule = examRule;
}
//4차
public String[][] getRatingText() {
return ratingText;
}
public void setRatingText(String[][] ratingText) {
this.ratingText = ratingText;
}
//2차
public String[][] getResult1() {
return result1;
}
public void setResult1(String[][] result1) {
this.result1 = result1;
}
public String[][] getResult2() {
return result2;
}
public void setResult2(String[][] result2) {
this.result2 = result2;
}
public String[][] getResult3() {
return result3;
}
public void setResult3(String[][] result3) {
this.result3 = result3;
}
public String[][] getResult4() {
return result4;
}
public void setResult4(String[][] result4) {
this.result4 = result4;
}
public String[][] getResult5() {
return result5;
}
public void setResult5(String[][] result5) {
this.result5 = result5;
}
public String[][] getResult6() {
return result6;
}
public void setResult6(String[][] result6) {
this.result6 = result6;
}
public String[][] getResult7() {
return result7;
}
public void setResult7(String[][] result7) {
this.result7 = result7;
}
public String[][] getResult8() {
return result8;
}
public void setResult8(String[][] result8) {
this.result8 = result8;
}
public String[][] getResult9() {
return result9;
}
public void setResult9(String[][] result9) {
this.result9 = result9;
}
public String[][] getResult10() {
return result10;
}
public void setResult10(String[][] result10) {
this.result10 = result10;
}
//생성자
public Information() {
this.exams = 1;
this.grade = "1";
this.totalClass = 1;
this.ratingSum = 2;
this.ratings = new int[1];
}
// public Information(String schoolName, String isMiddle, String grade, int totalClass, String subject, int exams) {
// this.schoolName = schoolName;
// this.isMiddle = isMiddle;
// this.grade = grade;
// this.totalClass = totalClass;
// this.subject = subject;
// this.exams = exams;
// //
// this.ratings = new int[1];
// this.names = new String[41][];
// this.examRule = new String[1][5];
// this.result = new String[41][];
// this.ratingSum = 0;
// this.ratingText = new String[1][3];
// }
}
package mini_1101_new;
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.FlowLayout;
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.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class JPanelBefore extends JPanel implements ActionListener {
Information information;
ViewFrame vf;
private JPanel pn1;
private JPanel pn2;
private JPanel pn1_1;
private JPanel pn1_2;
private JPanel pn1_3;
private JPanel pn2_1;
private JButton reset1; //초기화
private JButton save1; //저장
private JButton reset2; //초기화
private JButton save2; //저장
private JTextField schoolName; //학교명 입력
private Choice isMiddle; //중학교/고등학교 선택
private Choice grade; //학년 선택
private Choice totalClass; //총 반수 선택
private JTextField subject; //과목명
private Choice exams; //총 평가항목 수 (ex. 총 단원 수)
private JTable examsTable;
private JScrollPane jspExams;
public void panel1Setting() {
pn1_1.setLayout(new FlowLayout(FlowLayout.RIGHT));
pn1_1.add(reset1);
pn1_1.add(save1);
pn1_2.add(schoolName);
pn1_2.add(isMiddle);
pn1_2.add(grade);
pn1_2.add(new JLabel("학년 "));
pn1_3.add(new JLabel("총 반수 "));
pn1_3.add(totalClass);
pn1_3.add(new JLabel(" 과목명 "));
pn1_3.add(subject);
pn1_3.add(new JLabel(" 평가항목 수 "));
pn1_3.add(exams);
pn1.setLayout(new GridLayout(3, 1));
pn1.add(pn1_1);
pn1.add(pn1_2);
pn1.add(pn1_3);
}
public void panel2Setting() {
pn2_1.setLayout(new FlowLayout(FlowLayout.RIGHT));
pn2_1.add(reset2);
pn2_1.add(save2);
examsTableSetting();
pn2.setLayout(new BorderLayout());
pn2.add(pn2_1, BorderLayout.NORTH);
pn2.add(jspExams, BorderLayout.CENTER);
JLabel warning = new JLabel("<html>마지막 칸 입력후 Tab키를 눌러야 입력된 값이 저장됩니다.<br>"
+ "작업 도중 선행입력의 저장버튼을 다시 누르면 작업내용이 초기화되니 유의하시기 바랍니다.</html>");
pn2.add(warning , BorderLayout.SOUTH);
}
public void examsTableSetting() {
String[] header = new String[information.getExams()+1];
String[][] contents = new String[1][information.getExams()+1];
header[0] = "평가번호";
for(int i=1 ; i<information.getExams()+1 ; i++) {
header[i] = i+"";
}
contents[0][0] = "항목별 성취기준 수";
for(int i=1 ; i<information.getExams()+1 ; i++) {
contents[0][i] = "";
}
DefaultTableModel modelExams = new DefaultTableModel(contents, header);
examsTable = new JTable(modelExams);
examsTable.getTableHeader().setReorderingAllowed(false); //테이블 column 이동 잠금
examsTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //가로 스크롤바 생성
DefaultTableCellRenderer alignCenter = new DefaultTableCellRenderer(); //가운데정렬 설정(열단위로)
alignCenter.setHorizontalAlignment(JLabel.CENTER);
examsTable.getColumnModel().getColumn(0).setMinWidth(120); //0열 크기를 120으로
examsTable.setRowHeight(30); // 전체 행 높이를 30으로
for(int i = 0 ; i<information.getExams()+1 ; i++) {
examsTable.getColumnModel().getColumn(i).setCellRenderer(alignCenter);
}
jspExams = new JScrollPane(examsTable);
}
public void actionEventStart() { //버튼에 액션이벤트 추가
reset1.addActionListener(this);
save1.addActionListener(this);
reset2.addActionListener(this);
save2.addActionListener(this);
}
public void setRatingsSum() {
int sum = 0;
for (int i = 0 ; i < information.getExams() ; i++) {
sum += information.getRating(i);
}
information.setRatingSum(sum);
}
public void initComponent() {
pn1 = new JPanel();
pn2 = new JPanel();
pn1_1 = new JPanel(); //버튼공간
pn1_2 = new JPanel();
pn1_3 = new JPanel();
pn2_1 = new JPanel(); //버튼공간
reset1 = new JButton("초기화");
save1 = new JButton("저장");
reset2 = new JButton("초기화");
save2 = new JButton("저장");
actionEventStart(); //버튼에 액션이벤트 추가
schoolName = new JTextField(10);
isMiddle = new Choice();
grade = new Choice();
totalClass = new Choice();
subject = new JTextField(10);
exams = new Choice();
isMiddle.add("중학교");
isMiddle.add("고등학교");
for(int i = 0 ; i<3; i++) { //1~3
grade.add((i+1)+"");
}
for(int i = 0 ; i<10; i++) { //1~10
totalClass.add((i+1)+"");
}
for(int i = 0 ; i<20; i++) { //1~20
exams.add((i+1)+"");
}
panel1Setting();
panel2Setting();
// 최종
setLayout(new GridLayout(2,1));
add(pn1);
add(pn2);
}
public void initEvent() {
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == reset1) {
schoolName.setText("");
isMiddle.select(0);
grade.select(0);
totalClass.select(0);
subject.setText("");
exams.select(0);
} else if (e.getSource() == save1 ) {
information.setSchoolName(schoolName.getText());
information.setIsMiddle(isMiddle.getSelectedItem());
information.setGrade(grade.getSelectedItem());
information.setTotalClass(Integer.parseInt(totalClass.getSelectedItem()));
information.setSubject(subject.getText());
information.setExams(Integer.parseInt(exams.getSelectedItem()));
pn2.removeAll(); // 이거 중요!!!
panel2Setting();
vf.jpName.removeAll();
vf.jpName.namesTableSetting();
vf.jpList.removeAll();
vf.jpList.listTableSetting();
vf.repaint();
} else if (e.getSource() == reset2 ) {
for(int i = 0 ; i < information.getExams() ; i++) {
examsTable.setValueAt("", 0, i+1);
}
} else if (e.getSource() == save2) {
int[] tmp = new int[information.getExams()];
try {
for(int i = 0 ; i < information.getExams() ; i++) {
tmp[i] = Integer.parseInt((String) examsTable.getValueAt(0, i+1));
}
} catch (NumberFormatException e1) {
JOptionPane.showMessageDialog(null, "입력을 완료하지 않았거나 숫자 이외의 값을 입력하였습니다.");
return;
}
information.setRatings(tmp); //info객체의 ratings 값 저장
setRatingsSum(); //info객체의 ratingSum 값 저장
//System.out.println(information.getRatingSum());
vf.jpText.removeAll(); //ratingSum 업데이트 후 Text패널 갱신
vf.jpText.textTableSetting();
vf.c1.removeAll();
vf.c1.classTableSetting();
vf.repaint();
}
}
//생성자
public JPanelBefore (Information information, ViewFrame vf) {
this.information = information;
this.vf = vf;
initComponent();
initEvent();
}
}
package mini_1101_new;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class JPanelClass extends JPanel implements ActionListener { // 반 패널 (1~10반까지 객체 10개 생성)
private Information information;
private ViewFrame vf;
private int classNumber;
private JLabel info;
private JPanel pn1;
private JButton renewal; //갱신
private JButton reset; //초기화
private JButton save; //저장
private JTable classTable;
private JScrollPane jspClass;
public JTable getClassTable() {
return classTable;
}
public void classTableSetting() {
String[] header = new String[information.getExams()+3];
String[][] contents = new String[Main.MAXPEOPLE + 1][information.getExams()+3];
header[0] = "번호";
header[1] = "성명";
for (int i = 0 ; i<information.getExams() ; i++) {
header[i+2] = "평가 " + (i+1);
}
header[information.getExams()+2] = "";
for(int i = 0 ; i<information.getExams() ; i++) {
contents[0][i+2] = "1~" + information.getRating(i);
}
for(int i = 0 ; i < Main.MAXPEOPLE ; i++) {
contents[i+1][0] = (i+1)+"";
//contents[i+1][1] = "a";
}
DefaultTableModel modelClass = new DefaultTableModel(contents, header);
classTable = new JTable(modelClass);
classTable.getTableHeader().setReorderingAllowed(false); //테이블 column 이동 잠금
classTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //가로 스크롤바 생성
DefaultTableCellRenderer alignCenter = new DefaultTableCellRenderer();
alignCenter.setHorizontalAlignment(JLabel.CENTER); //가운데정렬
for(int i = 0 ; i<information.getExams()+3 ; i++) {
classTable.getColumnModel().getColumn(i).setCellRenderer(alignCenter); //가운데정렬 적용
}
classTable.getColumnModel().getColumn(information.getExams()+2).setMinWidth(800); //열크기
classTable.setRowHeight(25); // 행높이 25
jspClass = new JScrollPane(classTable);
//--------------
info.setText(information.getGrade() + "학년 " + classNumber + "반 " +" 세부능력 및 특기사항 ");
pn1.setLayout(new FlowLayout(FlowLayout.LEFT));
pn1.add(info);
pn1.add(renewal);
pn1.add(reset);
pn1.add(save);
setLayout(new BorderLayout());
add(pn1, BorderLayout.NORTH);
add(jspClass, BorderLayout.CENTER);
}
public void actionEventStart() { //버튼에 액션이벤트 추가
renewal.addActionListener(this);
reset.addActionListener(this);
save.addActionListener(this);
}
public void initComponent() {
pn1 = new JPanel();
renewal = new JButton("갱신");
reset = new JButton("초기화");
save = new JButton("저장");
info = new JLabel();
actionEventStart(); //버튼에 액션이벤트 추가
classTableSetting();
}
public void initEvent() {
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == reset) {
removeAll();
classTableSetting();
}
else if (e.getSource() == save ) {
// String[][] tmp = new String[42][information.getExams()+3];
//
// tmp[0] = new String[] {"평가번호", "평가영역", "평가내용", "평가항목", "평가도구"};
// for(int i = 0 ; i < information.getExams() ; i++) {
// for(int j = 0 ; j < 5 ; j++) {
// tmp[i+1][j] = (String) listTable.getValueAt(i, j);
// }
// }
// information.setExamRule(tmp);
} else if (e.getSource() == renewal) {
}
}
//생성자
public JPanelClass (Information information, ViewFrame vf, int classNumber) {
this.information = information;
this.vf = vf;
this.classNumber = classNumber;
initComponent();
initEvent();
}
}
package mini_1101_new;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class JPanelName extends JPanel implements ActionListener {
private Information information;
private ViewFrame vf;
private JPanel pn1;
private JButton reset; //초기화
private JButton open; //불러오기
private JButton save; //저장
private JTable namesTable;
private JScrollPane jspNames;
public void namesTableSetting() {
String[] header = new String[information.getTotalClass()+1];
String[][] contents = new String[Main.MAXPEOPLE][information.getTotalClass()+1];
header[0] = "번호";
for(int i=1 ; i<information.getTotalClass()+1 ; i++) {
header[i] = i+"반";
}
for(int i=0 ; i<Main.MAXPEOPLE ; i++) {
contents[i][0] = (i+1) + "";
}
for(int i = 0 ; i < Main.MAXPEOPLE ; i++) {
for(int j = 0 ; j < information.getTotalClass() ; j++) {
contents[i][j+1] = ""; // 이름부분은 빈문자열로 초기화
}
}
DefaultTableModel modelNames = new DefaultTableModel(contents, header);
namesTable = new JTable(modelNames);
namesTable.getTableHeader().setReorderingAllowed(false); //테이블 column 이동 잠금
namesTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //가로 스크롤바 생성
DefaultTableCellRenderer alignCenter = new DefaultTableCellRenderer();
alignCenter.setHorizontalAlignment(JLabel.CENTER); //가운데정렬
for(int i = 0 ; i<information.getTotalClass()+1 ; i++) {
namesTable.getColumnModel().getColumn(i).setMinWidth(100); //열크기 7
namesTable.getColumnModel().getColumn(i).setCellRenderer(alignCenter); //가운데정렬 적용
}
namesTable.setRowHeight(25); // 행높이 25
jspNames = new JScrollPane(namesTable);
add(pn1, BorderLayout.NORTH);
add(jspNames, BorderLayout.CENTER);
}
public void actionEventStart() { //버튼에 액션이벤트 추가
reset.addActionListener(this);
open.addActionListener(this);
save.addActionListener(this);
}
public void initComponent() {
pn1 = new JPanel();
reset = new JButton("초기화");
open = new JButton("불러오기");
save = new JButton("저장");
actionEventStart(); //버튼에 액션이벤트 추가
pn1.setLayout(new FlowLayout(FlowLayout.RIGHT));
pn1.add(new JLabel("전출한 학생은 '전출' 로 입력해 주세요. "));
pn1.add(reset);
pn1.add(open);
pn1.add(save);
setLayout(new BorderLayout());
namesTableSetting();
}
public void initEvent() {
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == reset) {
removeAll();
namesTableSetting();
} else if (e.getSource() == open) {
} else if (e.getSource() == save ) {
String[][] tmp = new String[Main.MAXPEOPLE+1][information.getTotalClass()+1];
tmp[0][0] = "번호";
for(int i=1 ; i<information.getTotalClass()+1 ; i++) {
tmp[0][i] = i+"반";
}
for(int i = 0 ; i < Main.MAXPEOPLE ; i++) {
for(int j = 0 ; j < information.getTotalClass() + 1 ; j++) {
tmp[i+1][j] = (String) namesTable.getValueAt(i, j);
}
}
information.setNames(tmp);
relayNames(); // 인포객체에 저장된 이름 정보를 각 반 객체의 이름 부분으로 전달
}
}
public void relayNames() {
for(int i = 0 ; i<Main.MAXPEOPLE ; i++) {
switch(i){
case 0 :
vf.c1.getClassTable().setValueAt(information.getName(i+1, 1), i+1, 1);
break;
case 1 :
vf.c2.getClassTable().setValueAt(information.getName(i+1, 2), i+1, 2);
break;
case 2 :
vf.c3.getClassTable().setValueAt(information.getName(i+1, 3), i+1, 3);
break;
case 3 :
vf.c4.getClassTable().setValueAt(information.getName(i+1, 4), i+1, 4);
break;
case 4 :
vf.c5.getClassTable().setValueAt(information.getName(i+1, 5), i+1, 5);
break;
case 5 :
vf.c6.getClassTable().setValueAt(information.getName(i+1, 6), i+1, 6);
break;
case 6 :
vf.c7.getClassTable().setValueAt(information.getName(i+1, 7), i+1, 7);
break;
case 7 :
vf.c8.getClassTable().setValueAt(information.getName(i+1, 8), i+1, 8);
break;
case 8 :
vf.c9.getClassTable().setValueAt(information.getName(i+1, 9), i+1, 9);
break;
case 9 :
vf.c10.getClassTable().setValueAt(information.getName(i+1, 10), i+1, 10);
break;
}
}
}
//생성자
public JPanelName (Information information, ViewFrame vf) {
this.information = information;
this.vf = vf;
initComponent();
initEvent();
}
}
package mini_1101_new;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
public class JPanelText extends JPanel implements ActionListener {
Information information;
ViewFrame vf;
private JPanel pn1;
private JButton reset; //초기화
private JButton save; //저장
private JTable textTable;
private JScrollPane jspText;
public void textTableSetting() {
String[] header = new String[] {
"단원", "성취번호", "세부능력 및 특기사항"};
String[][] contents = new String[information.getRatingSum()][3];
contents[0][0] = "평가 1";
for (int i = 0 ; i < information.getRating(0); i++) {
contents[i][1] = (i+1)+"";
}
int sum = 0;
for(int i=0 ; i < information.getRatingsLength() - 1 ; i++) {
sum += information.getRating(i);
contents[sum][0] = "평가 " + (i+2); //평가 이름
for (int j = 0 ; j< information.getRating(i+1) ; j++) {
contents[sum+j][1] = (j+1)+"";
}
}
for(int i = 0 ; i < information.getRatingSum() ; i++) {
contents[i][2] = ""; //내용부분은 빈문자열로 초기화
}
DefaultTableModel modelText = new DefaultTableModel(contents, header);
textTable = new JTable(modelText);
textTable.getTableHeader().setReorderingAllowed(false); //테이블 column 이동 잠금
textTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //가로 스크롤바 생성
DefaultTableCellRenderer alignCenter = new DefaultTableCellRenderer();
alignCenter.setHorizontalAlignment(JLabel.CENTER); //가운데정렬
for(int i = 0 ; i<3 ; i++) {
textTable.getColumnModel().getColumn(i).setWidth(250); //열크기 7
textTable.getColumnModel().getColumn(i).setCellRenderer(alignCenter); //가운데정렬 적용
}
textTable.getColumnModel().getColumn(2).setMinWidth(800); //열크기 7
textTable.setRowHeight(25); // 행높이 25
// try {
// TableCellRenderer renderer = new MyTableCellRenderer();
// textTable.setDefaultRenderer(Class.forName("java.lang.Object"), renderer);
// } catch (ClassNotFoundException e) {
// e.printStackTrace();
// }
jspText = new JScrollPane(textTable);
add(pn1, BorderLayout.NORTH);
add(jspText, BorderLayout.CENTER);
}
public void actionEventStart() { //버튼에 액션이벤트 추가
reset.addActionListener(this);
save.addActionListener(this);
}
public void initComponent() {
pn1 = new JPanel();
reset = new JButton("초기화");
save = new JButton("저장");
actionEventStart(); //버튼에 액션이벤트 추가
pn1.setLayout(new FlowLayout(FlowLayout.RIGHT));
pn1.add(reset);
pn1.add(save);
setLayout(new BorderLayout());
textTableSetting();
}
public void initEvent() {
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == reset) {
removeAll();
textTableSetting();
}
else if (e.getSource() == save ) {
String[][] tmp = new String[information.getRatingSum()+1][3];
tmp[0] = new String[] {"단원", "성취번호", "세부능력 및 특기사항"};
for(int i = 0 ; i < information.getRatingSum() ; i++) {
for(int j = 0 ; j < 3 ; j++) {
tmp[i+1][j] = (String) textTable.getValueAt(i, j);
}
}
information.setRatingText(tmp);
}
}
//생성자
public JPanelText (Information information, ViewFrame vf) {
this.information = information;
this.vf = vf;
initComponent();
initEvent();
}
}
//class MyTableCellRenderer extends DefaultTableCellRenderer {
// @Override
// public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
// boolean hasFocus, int row, int column) {
// Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
// if (row % 2 == 0) {
// cell.setBackground(Color.GREEN);
// } else {
// cell.setBackground(Color.YELLOW);
// }
// return cell;
// }
//}