크혹~
CardLayoutTest
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class CardLayoutTest
{
public static void main(String[] args)
{
final JFrame f = new JFrame("Card Layout Test");
final CardLayout c1 = new CardLayout();
final JPanel p = new JPanel();
p.setLayout(c1);
JPanel card1 = new JPanel();
card1.setBackground(Color.LIGHT_GRAY);
card1.add(new Label("Card 1"));
JPanel card2 = new JPanel();
card2.setBackground(Color.ORANGE);
card2.add(new Label("Card 2"));
JPanel card3 = new JPanel();
card3.setBackground(Color.CYAN);
card3.add(new Label("Card 3"));
p.add(card1, "1");
p.add(card2, "2");
p.add(card3, "3");
class Handler extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{
if(e.getModifiers() == e.BUTTON3_MASK)
c1.previous(p);
else
c1.next(p);
}
}
card1.addMouseListener(new Handler());
card2.addMouseListener(new Handler());
card3.addMouseListener(new Handler());
f.add(p);
f.setSize(200,200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
c1.show(p,"1");
}
}
5. 이벤트 처리
버튼 클릭시 발생되는 이벤트 : Action Event
class EventHandler implements ActionListener {
public void actionPerformed(ActionEvent e)
{
/* 버튼 클릭시 처리사항 사용자 정의 부분 */
}
}
ActionEventTest(+count포함)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ActionEventTest extends JFrame {
int count=0;
ActionEventTest(String title) {
super(title);
//부모 클래스인 JFrame의 생성자 함수, 이걸로 호출사용
JButton b =new JButton("확인");
setLayout(null);
b.setBounds(100,75,100,50);
b.addActionListener(new EventHandler());
add(b);
setSize(300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
class EventHandler implements ActionListener {
public void actionPerformed(ActionEvent e)
{
count++;
System.out.println(count+" Button Clicked");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new ActionEventTest("Button Event Test");
}
}
LoginTest
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LoginTest extends JFrame {
JTextField tfID;
JPasswordField tfPW;
JButton ok;
LoginTest(String title){
super(title);
JLabel lID=new JLabel("ID:",JLabel.RIGHT);
JLabel lPW=new JLabel("PW:",JLabel.RIGHT);
tfID=new JTextField(10);
tfPW=new JPasswordField(10);
ok=new JButton("ok");
ok.addActionListener(new EventHandler());
setLayout(new FlowLayout());
add(lID); add(tfID); add(lPW); add(tfPW);
add(ok);
setSize(450,75);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
class EventHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
String strID=tfID.getText();
String strPW=tfPW.getText();
System.out.println("Your ID : "+strID+" Your PW : "+strPW);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new LoginTest("Login Test Display");
}
}
LoginTest(Enter입력)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LoginTest extends JFrame {
JTextField tfID;
JPasswordField tfPW;
JButton ok;
LoginTest(String title){
super(title);
JLabel lID=new JLabel("ID:",JLabel.RIGHT);
JLabel lPW=new JLabel("PW:",JLabel.RIGHT);
tfID=new JTextField(10);
tfPW=new JPasswordField(10);
ok=new JButton("ok");
ok.addActionListener(new EventHandler());
tfID.addActionListener(new EventHandler());
tfPW.addActionListener(new EventHandler());
setLayout(new FlowLayout());
add(lID); add(tfID); add(lPW); add(tfPW);
add(ok);
setSize(450,75);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
class EventHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
String strID=tfID.getText();
String strPW=tfPW.getText();
System.out.println("Your ID : "+strID+" Your PW : "+strPW);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new LoginTest("Login Test Display");
}
}
ActionEvent
- mouseEvent도 버튼을 누를 때 이벤트를 처리하는 공통점이 있지만 ActionEvent가 more 포괄적!
- ID 5개, 그에 대응되는 PW 5개를 데이터베이스에 미리 저장하고 사용하려한다면,
HashMap사용 :: key-value
- Focus (in TextField)
아이디를 잘못 입력시 경고문 출력& Focus를 ID란에 재위치
재위치시 파란색 배경처리까지
tf.requestFoucus(); //Focus
tf.selectAll(); //Block
LoginTest(Focus+Block처리)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LoginTest extends JFrame {
JTextField tfID;
JPasswordField tfPW;
JButton ok;
LoginTest(String title){
super(title);
JLabel lID=new JLabel("ID:",JLabel.RIGHT);
JLabel lPW=new JLabel("PW:",JLabel.RIGHT);
tfID=new JTextField(10);
tfPW=new JPasswordField(10);
ok=new JButton("ok");
ok.addActionListener(new EventHandler());
tfID.addActionListener(new EventHandler());
tfPW.addActionListener(new EventHandler());
setLayout(new FlowLayout());
add(lID); add(tfID); add(lPW); add(tfPW);
add(ok);
setSize(450,75);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
class EventHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
String strID=tfID.getText();
String strPW=tfPW.getText();
System.out.println("Your ID : "+strID+" Your PW : "+strPW);
tfID.requestFocus();
tfID.selectAll();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new LoginTest("Login Test Display");
}
}
interface는 해당 메서드를 전부 선언해주어야함
But 사용할 일이 없기에 몸체만 써주자
public void moucePressed(MouseEvent me) { }
//공처리
=> so 귀찮아
solution : Adapter ~ 상속을 통한 재정의로 사용시 초초간편
'Studynote > Computer Science 12' 카테고리의 다른 글
JLabel/JButoon (0) | 2018.11.05 |
---|---|
MouseMotionListener (0) | 2018.11.05 |
14.11.18.화요일 13장 폰트~ (0) | 2018.11.05 |
14.11.17 13장 awt와 애플릿 (0) | 2018.11.05 |
14.11.11.Tue (0) | 2018.11.05 |
댓글