Daily coding
Java Basic : day 14 - AWT & SWING 5 : 버튼 Button 본문
AWT & SWING 5
Button
resource (자원) : button, panel, textField ...
-> Handle(번호,자원들은 주소값을 가지고 있고 그 주소값으로 다룬다)
- 버튼에 액션을 추가하기
1) 클래스에 ActionListener 인터페이스를 상속하여 actionPerformed() 를 오버라이딩 해준다
--> 이럴 경우, 버튼 객체를 생성한뒤 반드시 addActionLisenter( this ) 메소드를 실행해야 한다.
btn1 = new Button("버튼 one");
btn1.setBounds(100, 160, 150, 30);
btn1.addActionListener(this); // 버튼이 클릭 할 때 이 메소드가 동작이되도록 꼭 연결!!
add(btn1);
btn2 = new Button("버튼 two");
btn2.setBounds(300, 160, 150, 30);
btn2.addActionListener(this); // 버튼이 클릭 할 때 이 메소드가 동작이되도록 꼭 연결!!
add(btn2);
**** actionPerformed() 메소드는 ActionEvent 타입의 인자 e 를 받아들인다.
버튼이 여러개일 때는 e의 getSource를 통해 Object 타입의 반환값을 받아 조건문으로 버튼의 액션을 나누거나
Button 타입의 객체로 형변환 한 다음 조건문으로 버튼의 액션을 나누면 된다.
ex)
public void actionPerformed(ActionEvent e) {
1) Object obj = e.getSource;
2) Button btn = (Button) e.getSource();
if(btnTitle.equals("버튼 one")) {
label.setText("버튼 one이 클릭되었습니다");
}
// 혹은
if ( btn == btTwo )) {
label.setText("버튼 two가 클릭되었습니다");
// 리소스는 주소값으로 데이터가 이루어져있기 때문에 가능함
}
}
2) 버튼에 직접 ActionListener클래스를 생성하여 연결해주고 오버라이딩까지 하면 된다.
// 버튼이 한 두개 있을 때 사용하면 좋다.
btn1 = new Button("버튼 one");
btn1.setBounds(100, 160, 150, 30);
btn1.addActionListener(new ActionListener() {
// 인터페이스라 밑에 코드에 내가 원하는 처리만 입력하면 됨.
@Override
public void actionPerformed(ActionEvent e) {
label.setText("버튼 one이 클릭되었습니다");
}
});
add(btn1);
package day14.Lecture01_AWT.test5;
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JOptionPane;
public class WindowTest extends Frame implements WindowListener, ActionListener {
Label label;
Button btn1, btn2;
public WindowTest() {
super("간단한 예제");
setLayout(null);
// Button
/*
resource(자원) : button, panel, textField ...
-> Handle(번호,자원들은 주소값을 가지고 있고 그 주소값으로 다룬다)
*/
label = new Label("레이블 ");
label.setBounds(100,100,300,30);
add(label);
// 버튼이 여러개 있을 때
/*
* btn1 = new Button("버튼 one"); btn1.setBounds(100, 160, 150, 30);
* btn1.addActionListener(this); // 버튼이 클릭 할 때 이 메소드가 동작이되도록 꼭 연결!! add(btn1);
*
* btn2 = new Button("버튼 two"); btn2.setBounds(300, 160, 150, 30);
* btn2.addActionListener(this); // 버튼이 클릭 할 때 이 메소드가 동작이되도록 꼭 연결!! add(btn2);
*/
// 버튼이 한 두개 있을 때
btn1 = new Button("버튼 one");
btn1.setBounds(100, 160, 150, 30);
btn1.addActionListener(new ActionListener() {
// 인터페이스라 밑에 코드에 내가 원하는 처리만 입력하면 됨.
@Override
public void actionPerformed(ActionEvent e) {
label.setText("버튼 one이 클릭되었습니다");
}
});
add(btn1);
setBounds(0, 0, 640, 480);
setVisible(true);
addWindowListener(this);
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
// ActionListener (버튼 누르면 동작을 실행하기 위한 메소드)
// actionPerformed()
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "버튼 클릭!");
// 위처럼 작성하는 코드는 모든 버튼 눌렀을 때 동작한다.
Button btn = (Button) e.getSource();
String btnTitle = btn.getLabel(); // getLabel : 타이틀값 얻어옴
if(btnTitle.equals("버튼 one")) {
label.setText("버튼 one이 클릭되었습니다");
}else if ( btnTitle.equals("버튼 two")) {
label.setText("버튼 two가 클릭되었습니다");
}
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 14 - AWT & SWING 7 : Window Change (0) | 2019.12.08 |
---|---|
Java Basic : day 14 - AWT & SWING 6 : TextField & TextArea (0) | 2019.12.08 |
Java Basic : day 14 - AWT & SWING 4 : 패널 Panel (0) | 2019.12.08 |
Java Basic : day 14 - AWT & SWING 3 : 레이아웃 Layout (0) | 2019.12.08 |
Java Basic : day 14 - AWT & SWING 2 (0) | 2019.12.08 |