프로그램설명 - 반지름의 값을 적고...원 둘레와 원의 면적 버튼을 누를시 아래 텍스트필드에 그 값이 나오게 하여라.
1. 먼저 이벤트는 어떠한 행동을 하였을때 발생하는 액션리스너를 이용하였다.
2. 액션리스너를 상속받는 클래스는 외부클래스로 두었다.(이 밖에 내부클래스로 사용하는법과 그 안에 메인클래스에 함수로 사용하는법 세가지가 있다.)
3. 그리하여 총 3개의 클래스로 만들었다.
MyFrame클래스 - 스윙을 이용하여 GUI 환경의 컴포넌트들을 만들고 이벤트를 등록한다.
MyActionHandle 클래스 - 이벤트 발생시 발생되는 행동들이 실행하는 클래스.
MyFrameTest클래스 - 프로그램을 시작한다.
MyActionHandle
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyActionHandler implements ActionListener //액션인터페이스를 사용
{
private MyFrame f;
public MyActionHandler(MyFrame f) //포인터로 MyFrame클래스를 가져온다.
{
this.f = f;
}
public void actionPerformed(ActionEvent e)
{
double d;
if(e.getSource()==f.getButton())
{
d = Double.parseDouble(f.getTextField());
f.setTextField(d *3.14);
}
else if(e.getSource()==f.getButton2())
{
d = Double.parseDouble(f.getTextField());
f.setTextField(d*d*3.14);
}
}
}
MyFrame
import javax.swing.*;
public class MyFrame extends JFrame //JFrame을 상속받는다.
{
private JPanel panel;
private JButton b1;
private JButton b2;
private JLabel l1;
private JTextField t1;
private JTextField t2;
public JButton getButton(){ //MyFrame의 private 변수로 인해 get set 함수만들기
return b1;
}
public JButton getButton2(){
return b2;
}
public String getTextField(){
return t1.getText();
}
public void setTextField(Double d){
t2.setText(Double.toString(d));
}
public MyFrame()
{
setSize(300, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("연습~");
panel = new JPanel();
b1 = new JButton("원의 둘레");
b2 = new JButton("원의 면적");
l1 = new JLabel("반지름의 길이를 입력해주세요:");
t1 = new JTextField(5);
t2 = new JTextField(10);
MyActionHandler han = new MyActionHandler(this); //리스너클래스 생성
b1.addActionListener(han); //리스너등록
b2.addActionListener(han);
panel.add(l1);
panel.add(t1);
panel.add(b1);
panel.add(b2);
panel.add(t2);
add(panel);
setVisible(true);
}
}
MyFrameTest
public class MyFrameTest
{
public static void main(String[] args)
{
MyFrame my = new MyFrame();
}
}
'프로그래밍 기초 > Java' 카테고리의 다른 글
GUI 환경에서 이벤트 이용한 프로그램(메인클래스안에서) (1) | 2011.11.28 |
---|---|
GUI 환경에서 이벤트 이용한 프로그램(내부클래스) (0) | 2011.11.28 |