- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- Android
- ACL
- 안드로이드
- RaspberryPi
- 쉘 스크립트 if문
- 네트워크
- 쉘 스크립트 기초
- 클라우드
- docker
- nginx
- Shell script
- 그라파나
- System
- 메소드
- GUI
- Linux
- Python
- 라즈베리파이
- Tkinter
- 쉘 스크립트
- 리눅스
- centos docker
- JSP
- synology
- Java
- GPIO
- LEVIATHAN
- API
- 자바
- 프로젝트
- Today
- Total
IT창고
자바(JAVA)실습 - GUI 계산기 본문
조건
1. GUI 계산기 소스만들때 클래스를 사용
2. Label에 숫자를 누르면 치환되는 부분을 숫자가 이어서 나오도록 수정
3. =을 누르면 계산값 보이기
소스코드
main
public class Main {
public static void main(String[] args) {
new Control();
}
}
------------------------------------------------
Control
public class Control {
CalculFrame calFrame = new CalculFrame();
public Control(){
BaseFrame myFrame = new BaseFrame(300, 500, 200, 200);
myFrame.setCenter();
myFrame.setVisible(true);
calFrame.setVisible(true);
}
}
------------------------------------------------
CalFrame
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class CalculFrame extends Frame {
int curValue = 0;
String rule = "";
public CalculFrame() {
setSize(200, 300);
setLocation(200, 200);
setResizable(false);
init();
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
private void init() {
// 레이아웃 만들기
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.fill = GridBagConstraints.BOTH;
Label show = new Label("0");
ActionListener act = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String str = ((Button) e.getSource()).getLabel();
String curStr = show.getText();
if (curStr.equals("0")) {
show.setText(str);
} else {
show.setText(curStr + str);
}
}
};
Button btn1 = new Button("1");
Button btn2 = new Button("2");
Button btn3 = new Button("3");
Button btn4 = new Button("4");
Button btn5 = new Button("5");
Button btn6 = new Button("6");
Button btn7 = new Button("7");
Button btn8 = new Button("8");
Button btn9 = new Button("9");
Button btn0 = new Button("0");
Button btnEqual = new Button("=");
Button btnClear = new Button("C");
Button btnPlus = new Button("+");
Button btnMinus = new Button("-");
btnEqual.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(rule.equals("+") && curValue != 0){
String curStr = show.getText();
int tempNewNumber = Integer.parseInt(curStr);
tempNewNumber = curValue + tempNewNumber;
show.setText(tempNewNumber+"");
curValue = 0;
rule ="";
}else if(rule.equals("-") && curValue != 0 ){
String curStr = show.getText();
int tempNewNumber = Integer.parseInt(curStr);
tempNewNumber = curValue - tempNewNumber;
show.setText(tempNewNumber+"");
curValue = 0;
rule ="";
}
}
});
btnClear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
show.setText("0");
curValue = 0;
rule = "";
}
});
btnPlus.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String curStr = show.getText();
if (!curStr.equals("0")) {
rule = "+";
curValue = Integer.parseInt(curStr);
show.setText("0");
}
}
});
btnMinus.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String curStr = show.getText();
if (!curStr.equals("0")) {
rule = "-";
curValue = Integer.parseInt(curStr);
show.setText("0");
}
}
});
gbc.gridx = 0;
gbc.gridy = 1;
add(btn7, gbc);
gbc.gridx = 1;
gbc.gridy = 1;
add(btn8, gbc);
gbc.gridx = 2;
gbc.gridy = 1;
add(btn9, gbc);
gbc.gridx = 0;
gbc.gridy = 2;
add(btn4, gbc);
gbc.gridx = 1;
gbc.gridy = 2;
add(btn5, gbc);
gbc.gridx = 2;
gbc.gridy = 2;
add(btn6, gbc);
gbc.gridx = 0;
gbc.gridy = 3;
add(btn1, gbc);
gbc.gridx = 1;
gbc.gridy = 3;
add(btn2, gbc);
gbc.gridx = 2;
gbc.gridy = 3;
add(btn3, gbc);
gbc.gridx = 0;
gbc.gridy = 4;
add(btn0, gbc);
gbc.gridx = 1;
gbc.gridy = 4;
gbc.gridwidth = 1;
add(btnEqual, gbc);
gbc.gridx = 2;
gbc.gridy = 4;
gbc.gridwidth = 1;
add(btnClear, gbc);
gbc.gridx = 3;
gbc.gridy = 1;
gbc.gridwidth = 2;
gbc.gridheight = 2;
add(btnPlus, gbc);
gbc.gridx = 3;
gbc.gridy = 3;
gbc.gridwidth = 2;
gbc.gridheight = 2;
add(btnMinus, gbc);
show.setAlignment(Label.RIGHT);
show.setBackground(Color.YELLOW);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 5;
gbc.gridheight = 1;
add(show, gbc);
btn1.addActionListener(act);
btn2.addActionListener(act);
btn3.addActionListener(act);
btn4.addActionListener(act);
btn5.addActionListener(act);
btn6.addActionListener(act);
btn7.addActionListener(act);
btn8.addActionListener(act);
btn9.addActionListener(act);
btn0.addActionListener(act);
}
}
결과화면
클래스에 레이아웃을 설정해서 소스길이를 줄이고 addActionListener으로 동작을 설정해서 실제 계산이 되도록 연동시켰습니다. 초기화버튼을 추가해서 리셋을 시키고 합이나 뺄셈으로 얻은 값을 그대로 합이나 뺄셈하여 연속으로 계산할수있게 만들었습니다.
Tip
Frame을 사용할때마다 항상 선언하고 소스를 입력해야하는데 기본Frame클래스를 만들어 필요할때마다 가져오는 클래스를 따로 소스코딩
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Label;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class BaseFrame extends Frame {
int width;
int height;
public BaseFrame(int width, int height,int locX, int locY) {
this.width = width;
this.height = height;
setSize(width, height);
setLocation(locX, locY);
setResizable(false);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void setCenter(){
Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();
int width = (int) scr.getWidth();
int height = (int) scr.getHeight();
setLocation((width / 2) - (width / 2), (height / 2) - (height / 2));
}
}
'프로그래밍 > JAVA' 카테고리의 다른 글
자바(JAVA) 실습 - GUI 방명록 (0) | 2017.09.18 |
---|---|
자바(JAVA) 개발을 위한 메소드(Method) 모음3 (0) | 2017.09.17 |
자바(JAVA) 실습 - GUI로 달력만들기 (0) | 2017.09.11 |
자바(JAVA) - GUI 프로그램 (0) | 2017.09.11 |
자바(JAVA)실습 - 클래스사용하기 (0) | 2017.09.02 |