Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 운영체제연습문제
- backpropagation
- ann
- github branch
- repository 복구
- 2020정보처리기사
- 파이썬
- GitHub
- homebrew설치
- Swing
- BPTT
- AIStages
- RNN
- 딥러닝
- Django
- 정보처리기사
- 우분투리눅스
- 운영체제
- Git
- 리눅스연습문제
- 판교퇴근길밋업
- 자바
- 부스트캠프 AI Tech
- 리눅스7장
- CNN
- Python
- 쉽게배우는운영체제
- MAC OS
- ai개발밋업
- java
Archives
- Today
- Total
코딩하는 애옹😸
[SWING] 성적분포표 나타내기 / 성적산출 본문
728x90
반응형
JAVA Programming
성적을 시각화하여 그래프로 나타내는 프로그램
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
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.JTextField;
public class ExamResult extends JFrame {
public ExamResult() {
super("성적분포표");
buildGUI();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(500,200);
setSize(400,400);
setVisible(true);
}
private void buildGUI() {
setLayout(new BorderLayout());
Container contentpane = getContentPane();
ResultPanel resultPanel = new ResultPanel();
//그래프를 그릴 패널
contentpane.add(resultPanel, BorderLayout.CENTER);
JPanel p = new JPanel();
JTextField e1 = new JTextField(3);
JTextField e2 = new JTextField(3);
JTextField e3 = new JTextField(3);
JButton button = new JButton("성적나와라뿅");
p.add(new JLabel("국어"));
p.add(e1);
p.add(new JLabel("영어"));
p.add(e2);
p.add(new JLabel("수학"));
p.add(e3);
p.add(button);
contentpane.add(p, BorderLayout.SOUTH);
button.addActionListener(new DrawingActionListener(e1, e2, e3, resultPanel));
//버튼을 누를 시 작동할 리스너
}
public static void main(String[] args) {
new ExamResult();
}
//결과물(그래프)이 나타날 패널
class ResultPanel extends JPanel{
int kor, eng, math;
public void paint(Graphics g) {
g.clearRect(0,0,getWidth(),getHeight());
g.drawLine(50, 250, 350, 250);
for (int i = 1; i< 11 ; i++) {
g.drawString(i*10 + "", 25, 255-(20*i));
g.drawLine(50, 250-(20*i), 350, 250-(20*i));
}
g.drawLine(50, 20, 50, 250);
g.drawString("국어", 100, 270);
g.drawString("영어", 200, 270);
g.drawString("수학", 300, 270);
g.setColor(Color.BLUE);
if(kor > 0)
g.fillRect(110, 250 - kor*2, 10, kor*2);
if(eng > 0)
g.fillRect(210, 250 - eng*2, 10, eng*2);
if(math > 0)
g.fillRect(310, 250 - math*2, 10, math*2);
}
void setScore(int kor, int eng, int math) {
this.kor = kor;
this.eng = eng;
this.math = math;
}
}
//버튼을 눌렀을 때 동작할 리스너
class DrawingActionListener implements ActionListener{
JTextField e1, e2, e3;
ResultPanel resultPanel;
DrawingActionListener(JTextField e1, JTextField e2, JTextField e3, ResultPanel resultPanel){
this.e1 = e1;
this.e2 = e2;
this.e3 = e3;
this.resultPanel = resultPanel;
}
@Override
public void actionPerformed(ActionEvent e) {
//숫자를 입력하지 않았을 시 오류 해결 & 에러 메세지
try{
int kor = Integer.parseInt(e1.getText());
int eng = Integer.parseInt(e2.getText());
int math = Integer.parseInt(e3.getText());
resultPanel.setScore(kor, eng, math);
resultPanel.repaint();
}
catch(NumberFormatException nfe) {
JOptionPane.showMessageDialog(resultPanel, "다시 입력하세요", "에러 메세지", JOptionPane.ERROR_MESSAGE);
}
}
}
}
#1 기본 화면
#2 숫자 외 다른 문자를 입력했을 시
#3 점수(숫자) 입력 시 올바른 결과가 나옴
<그리드 그래프 그리기>
g.drawLine(50, 250, 350, 250);
//"국어" "영어" "수학" 바로 윗줄 (가로줄)
for (int i = 1; i< 11 ; i++) {
g.drawString(i*10 + "", 25, 255-(20*i));
g.drawLine(50, 250-(20*i), 350, 250-(20*i));
}
//10px씩 간격을 두어 숫자와 선 삽입
g.drawLine(50, 20, 50, 250);
//점수 바로 옆줄 (세로줄)
g.drawString("국어", 100, 270);
g.drawString("영어", 200, 270);
g.drawString("수학", 300, 270);
사실 그래프 그리는 것이 가장 헷갈렸는데
노트에😂 손으로 끄적여보니까 이해하기 쉬웠던 것 같아요...!
반응형
'Programming > Java' 카테고리의 다른 글
[SWING] 스레드 / StopWatch (1) | 2019.12.19 |
---|
Comments