[과제] 자바_GUI_2진수를 10진수로 만드는 간단한 프로그램

728x90

[코드 설명]

<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 버튼 누르면 공백

728x90