package com.std.cal; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.math.BigDecimal; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class ScoreCal extends JFrame implements ActionListener{ JPanel jp1 = null; JLabel lb1 = null; JLabel lb2 = null; JLabel lb3 = null; JLabel lb4 = null; JLabel lb5 = null; JLabel lb6 = null; JLabel lb7 = null; JTextField[] tf = null; JLabel line1 = null; JLabel line2 = null; JButton bt1 = null; JButton bt2 = null; JButton bt3 = null; public ScoreCal(){ //JFrame셋팅 setLayout(null); setTitle("성적관리 프로그램 v0.1"); setSize(260, 260); setResizable(false); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //라벨생성 String[] labelTitle = {"성적관리" , "국어 : ", "영어 : " , "수학 : ", "과학 : " , "사회 : ", "음악 : " , "성적출력" , "총점 : ", "평균 : "}; JLabel[] label = new JLabel[10]; for(int i=0 ; i<labelTitle.length ; i++){ label[i] = new JLabel(labelTitle[i]); } //텍스트필드 생성 tf = new JTextField[8]; for(int i=0 ; i<tf.length ; i++){ tf[i] = new JTextField(); tf[i].setHorizontalAlignment(JTextField.RIGHT); //텍스트필드값을 오른쪽정렬 tf[i].setText("0"); } //jp1패널 셋팅 jp1 = new JPanel(); jp1.setLayout(null); jp1.setSize(260, 300); jp1.setLocation(0, 0); jp1.setBackground(new Color(051, 204, 102)); //라벨 좌표, 크기값 int lb_x = 5; int lb_y = 5; int lb_width = 55; int lb_height = 15; //텍스트필드 좌표, 크기값 int tf_x = 45; int tf_y = 38; int tf_width = 70; int tf_height = 20; //성적관리 라벨 label[0].setBounds(lb_x, lb_y, lb_width, lb_height); label[0].setOpaque(true); label[0].setFont(new Font("돋움체", Font.BOLD, 12)); label[0].setBackground(new Color(000, 153, 051)); label[0].setForeground(Color.WHITE); //과목 라벨 배열로 생성 int label_One = 1; int label_Two = 1; for(int i=1 ; i<7 ; i++){ if((i%2) != 0){ label[i].setBounds(lb_x, lb_y + (34*label_One), lb_width, lb_height); label_One++; }else{ label[i].setBounds(lb_x + 120, lb_y + (34*label_Two), lb_width, lb_height); label_Two++; } } //과목 라벨 생성 //label[1].setBounds(lb_x, lb_y + 35, lb_width, lb_height); //label[3].setBounds(lb_x, lb_y + 70, lb_width, lb_height); //label[5].setBounds(lb_x, lb_y + 105, lb_width, lb_height); // //label[2].setBounds(lb_x + 120, lb_y + 35, lb_width, lb_height); //label[4].setBounds(lb_x + 120, lb_y + 70, lb_width, lb_height); //label[6].setBounds(lb_x + 120, lb_y + 105, lb_width, lb_height); //jp1패널에 라벨 추가 jp1.add(label[0]); jp1.add(label[1]); jp1.add(label[3]); jp1.add(label[5]); jp1.add(label[2]); jp1.add(label[4]); jp1.add(label[6]); //과목 텍스트필드 배열로 생성 int Text_One = 0; int Text_Two = 0; for(int i=0 ; i<6 ; i++){ if((i%2) != 0){ tf[i].setBounds(tf_x + 120, tf_y + (30 *Text_One), tf_width, tf_height); tf[i].setOpaque(true); tf[i].setBackground(new Color(204, 255, 153)); Text_One++; }else{ tf[i].setBounds(tf_x, tf_y + (30 *Text_Two), tf_width, tf_height); tf[i].setOpaque(true); tf[i].setBackground(new Color(204, 255, 153)); Text_Two++; } } //과목 텍스트필드 생성 //tf[1].setBounds(tf_x, tf_y, tf_width, tf_height); //tf[1].setOpaque(true); //tf[1].setBackground(new Color(204, 255, 153)); // //tf[3].setBounds(tf_x, tf_y + 34, tf_width, tf_height); //tf[3].setOpaque(true); //tf[3].setBackground(new Color(204, 255, 153)); // //tf[5].setBounds(tf_x, tf_y + 68, tf_width, tf_height); //tf[5].setOpaque(true); //tf[5].setBackground(new Color(204, 255, 153)); // //tf[0].setBounds(tf_x + 120, tf_y, tf_width, tf_height); //tf[0].setOpaque(true); //tf[0].setBackground(new Color(204, 255, 153)); // //tf[2].setBounds(tf_x + 120, tf_y + 34, tf_width, tf_height); //tf[2].setOpaque(true); //tf[2].setBackground(new Color(204, 255, 153)); // //tf[4].setBounds(tf_x + 120, tf_y + 68, tf_width, tf_height); //tf[4].setOpaque(true); //tf[4].setBackground(new Color(204, 255, 153)); //jp1패널에 텍스트필드 추가 jp1.add(tf[1]); jp1.add(tf[3]); jp1.add(tf[5]); jp1.add(tf[0]); jp1.add(tf[2]); jp1.add(tf[4]); //점선1 line1 = new JLabel("----------------------------------------------------------"); line1.setBounds(lb_x, lb_y, 300, lb_y+250); jp1.add(line1); //성적출력 라벨 label[7].setBounds(lb_x, lb_y + 140, lb_width, lb_height); label[7].setOpaque(true); label[7].setFont(new Font("돋움체", Font.BOLD, 12)); label[7].setBackground(new Color(000, 153, 051)); label[7].setForeground(Color.WHITE); //총점 라벨, 텍스트필드 label[8].setBounds(lb_x, lb_y + 163, lb_width, lb_height); tf[6].setBounds(tf_x, lb_y + 160, tf_width, tf_height); tf[6].setOpaque(true); tf[6].setBackground(new Color(204, 255, 153)); //평균 라벨, 텍스트필드 label[9].setBounds(lb_x + 120, lb_y + 163, lb_width, lb_height); tf[7].setBounds(tf_x + 120, lb_y + 160, tf_width, tf_height); tf[7].setOpaque(true); tf[7].setBackground(new Color(204, 255, 153)); //jp1패널에 총점,평균 라벨, 텍스트필드 추가 jp1.add(label[7]); jp1.add(label[8]); jp1.add(label[9]); jp1.add(tf[6]); jp1.add(tf[7]); //점선2 line2 = new JLabel("----------------------------------------------------------"); line2.setBounds(lb_x, lb_y, 300, lb_y+370); jp1.add(line2); //버튼생성 - 총점, 평균, 리셋 bt1 = new JButton("총점"); bt1.addActionListener(this); bt1.setBackground(new Color(153, 255, 204)); bt2 = new JButton("평균"); bt2.addActionListener(this); bt2.setBackground(new Color(153, 255, 204)); bt3 = new JButton("리셋"); bt3.addActionListener(this); bt3.setBackground(new Color(153, 255, 204)); bt1.setBounds(lb_x - 20 + 20, lb_y + 200, 60, 20); bt2.setBounds(lb_x + 85, lb_y + 200, 60, 20); bt3.setBounds(lb_x + 170, lb_y + 200, 60, 20); //jp1패널에 버튼 추가 jp1.add(bt1); jp1.add(bt2); jp1.add(bt3); //JFrame에 jp1패널 추가 add(jp1); setVisible(true); }//end of ScoreCal constructor //합계 연산 public BigDecimal bSum(){ BigDecimal bKor = new BigDecimal(tf[0].getText()); BigDecimal bEng = new BigDecimal(tf[1].getText()); BigDecimal bMath = new BigDecimal(tf[2].getText()); BigDecimal bScience = new BigDecimal(tf[3].getText()); BigDecimal bSociety = new BigDecimal(tf[4].getText()); BigDecimal bmusic = new BigDecimal(tf[5].getText()); BigDecimal bTo = bKor.add(bEng).add(bMath).add(bScience).add(bSociety).add(bmusic); BigDecimal bTotal = bTo.setScale(2, BigDecimal.ROUND_HALF_UP); //소수2번째 자리까지 반올림해서 return bTotal; }//end of bSum method //평균 연산 public BigDecimal bDivision(){ BigDecimal bDiv = bSum().divide(new BigDecimal("6"), 2,BigDecimal.ROUND_UP); //소수2번째 자리까지 반올림해서 return bDiv; }//end of bDivision method @Override public void actionPerformed(ActionEvent e) { //총점 눌렀을때 if(e.getSource() == bt1){ tf[6].setText(""); tf[6].setText(bSum().toString()); } //평균 눌렀을때 if(e.getSource() == bt2){ tf[7].setText(""); tf[7].setText(bDivision().toString()); } //리셋 눌렀을때 if(e.getSource() == bt3){ for(int i=0 ; i<tf.length ; i++){ tf[i].setText(""); } // tf[0].setText(""); // tf[1].setText(""); // tf[2].setText(""); // tf[3].setText(""); // tf[4].setText(""); // tf[5].setText(""); // tf[6].setText(""); // tf[7].setText(""); } }//end of actionPerformed method public static void main(String[] args) { ScoreCal sc = new ScoreCal(); }//end of main method }//end of ScoreCal class
반응형
'Dev_Study > Java_backup' 카테고리의 다른 글
[JAVA / SWING] 배치관리자(Layout Manager) - CardLayout (0) | 2016.10.17 |
---|---|
[JAVA / SWING] 배치관리자(Layout Manager) - BoxLayout (0) | 2016.10.07 |
[JAVA / SWING] 배치관리자(Layout Manager) - GridLayout (0) | 2016.10.07 |
[JAVA / SWING] 배치관리자(Layout Manager) - BorderLayout (0) | 2016.10.07 |
[JAVA / SWING] 배치관리자(Layout Manager) - FlowLayout (0) | 2016.10.07 |