[코드 설명]
<class MyFrame() 설명 >
-MyFrame 클래스에 JFrame 상속과 동시에 ActionListener를 구현해놓았다.
class MyFrame extends JFrame implements ActionListener {
//필드
private JButton zero, one, clear, change; //버튼 4개
private JTextField text; //Text 창
private JPanel panel; //패널
//생성자
public MyFrame() {
setSize(350, 300); //프레임 크기 설정
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("자바 시험");
setLayout(new BorderLayout());
panel = new JPanel(); //패널 객체 생성
//입력 출력될 text 설정
text = new JTextField(20);
text.setEditable(false);//사용자가 직접 편집 불가능
//변환 버튼 설정
change = new JButton("변환");
change.addActionListener(this); //이벤트 연결
//0 버튼 설정
zero = new JButton("0");
zero.addActionListener(this); //이벤트 연결
//1버튼 설정
one = new JButton("1");
one.addActionListener(this); //이벤트 연결
//clear 버튼 설정
clear = new JButton("clear");
clear.addActionListener(this); //이벤트 연결
//패널에 차례로 컴포넌트들 add 처리
panel.add(text);
panel.add(change);
panel.add(zero);
panel.add(one);
panel.add(clear);
add(panel); //프레임에 패널 add 처리
setVisible(true);// 화면에 보이도록 설정
}
<이벤트 처리>
-MyFrame() 클래스는 ActionListener 인터페이스를 구현한 클래스이므로
내부에 actionPerformed() 메소드를 재정의하여 사용할 수 있다.
-이 메소드 내부에서 실질적으로 이벤트 연결해놓은 컴포넌트들의 이벤트 처리했다.
1)0, 1 버튼이 눌리면 기존의 text를 얻어오고 그 뒤에 이어서 0 or 1을 이어붙여야 한다.
따라서 getText()하여 얻어온 String변수에 다시 setText()처리하였다.
2)clear 버튼이 눌리면 기존의 text는 지워져야 한다.
따라서 setText(“”) 빈 문자열로 세팅해주었다.
3) 변환 버튼이 눌리면 기존에 입력되어있는 0과 1로 이루어진 2진수 text를 10진수 text로 변환시켜주어야 한다.
따라서 기존 text를 getText()하여 String으로 받은 뒤,
Integer.parseInt(string, 2)를 이용하여 2진수로 입력되어있는 String을 10진수로 변환시켜서 int형 num 변수에 저장시켜두었다.
이를 다시 text에 setText(num) 처리시켜서 기능을 구현했다.
//(이벤트 구현) ActionListener의 메소드 재정의
@Override
public void actionPerformed(ActionEvent e) {
// TODO 자동 생성된 메소드 스텁
if(e.getSource() == zero) {// 0 눌리면
String a = text.getText(); //현재의 text얻어와 String으로 저장해두고
text.setText("" + a + "" + 0 ); //기존 text 뒤에 0 을 이어붙임
}
if(e.getSource() == one) { // 1 눌리면
String a = text.getText(); //현재의 text얻어와 String으로 저장해두고
text.setText("" + a + "" + 1); //기존 text 뒤에 1 붙이기
}
if(e.getSource() == clear) { //clear 버튼 눌리면
text.setText(""); //text창 비워두기
}
if(e.getSource() == change) { //변환 버튼 누르면
String tmp = text.getText(); //입력되어있는 text를 String으로 받은 뒤,
int num = Integer.parseInt(tmp, 2); //2진수로 입력된 string변수를 10진수로
text.setText("" + num); //변환된 10진수를 다시 text에 세팅해준다.
}
}
}
public class test1 { //main() 포함된 클래스
public static void main(String[] args) {
// TODO 자동 생성된 메소드 스텁
new MyFrame(); //위에서 구현해놓은 기능 실행 위해서 객체 생성
}
}
[실행결과화면]
Ex) 이진수 101 입력 시 -> 변환 클릭 시 10진수 ‘5’ 로 변환됨
-> clear 버튼 누르면 공백
'Java > [학교] Java_GUI' 카테고리의 다른 글
자바_GUI_마우스이벤트_사각형그리기 (0) | 2021.12.12 |
---|---|
자바_GUI_캡쳐 프로그램 (0) | 2021.12.12 |
[과제] 자바_GUI_긴문자열에서 숫자만 추출해오기 (0) | 2021.12.12 |
[과제] 자바_GUI_ 소수 판별 및 출력 (0) | 2021.12.12 |
[과제] 자바_연결리스트_구현 (0) | 2021.12.12 |