[패널과 합친 레이블 ]


import javax.swing.Icon;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;


public class Animation extends JFrame {

private static final long serialVersionUID = 1L;


public Animation() {

setLayout(null);

JPanel jp = new JPanel();

Icon ic = new ImageIcon("image\\캡처1.png");

JLabel lbl = new JLabel(ic);

jp.setBounds(20, 150, 430, 420);


jp.add(lbl);


// 패널추가

add(jp);

// 기본설정

setTitle("움직이는 스머프");

setBounds(100, 100, 1000, 1000);

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);


String[] imgs = { "캡처1.png", "캡처2.png", "캡처3.png", "캡처4.png", "캡처5.png", "캡처6.png", "캡처7.png", "캡처8.png",

"캡처9.png", "캡처10.png", "캡처11.png", "캡처12.png" };


int idx = 0;

int pos = 5;

while (true) {

idx = idx + 1;

try {


Thread.sleep(100);

Icon icon1 = new ImageIcon("image\\" + imgs[idx % imgs.length]);

lbl.setIcon(icon1);

int x = jp.getX();

int y = jp.getY();

System.out.println(y);

if(x<10) {

pos=-5;

}else if (x>450) {

pos = 5;

}

jp.setLocation(x+pos , y);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}


}


}


}


// 위의 소스코드는 이미지를 움직이기 위한 소스코드 입니다. 

// 만약 패널위에 이미지를 묶어주었다면 위와 같이 이미지가 들어간 레이블의 값을 이동시키는 것이 아니라 

// 이미지를 묶고 있는 패널을 이동시켜주어야만합니다. 


만약, 레이블만 사용할 것이라면, 레이블만을 움직여주어야만합니다. 


[레이블로만 구성된 이미지 이동 ] 

import java.awt.Button;


import javax.swing.Icon;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;


public class Animation2 extends JFrame {


public Animation2() {


setLayout(null);


Icon ic = new ImageIcon("image\\캡처1.png");

JLabel lbl = new JLabel(ic);

lbl.setBounds(150, 30, 150,150);

add(lbl);

Button btn = new Button("dddddd");

add(btn);


setTitle("움직이는 스머프");

setBounds(100, 100, 1000, 1000);

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);

String[] imgs = { "캡처1.png", "캡처2.png", "캡처3.png", "캡처4.png", "캡처5.png", "캡처6.png", "캡처7.png", "캡처8.png",

"캡처9.png", "캡처10.png", "캡처11.png", "캡처12.png" };


int idx = 0;

int pos = 5;

while (true) {

idx = idx + 1;

try {


Thread.sleep(50);

Icon icon1 = new ImageIcon("image\\" + imgs[idx % imgs.length]);

lbl.setIcon(icon1);

int x = lbl.getX();

int y = lbl.getY();

System.out.println(x);

if (x < 10) {

pos = 5;

} else if (x > 750) {

pos = -5;

}

lbl.setLocation(x + pos, y);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}


}


}


}



'Java' 카테고리의 다른 글

String이 아닌 데이터를 String 으로 변환하기  (0) 2018.01.16
JOption Pane  (0) 2018.01.16
AWT를 활용한 ActionListener 사용법  (0) 2018.01.15
이벤트 라우팅  (0) 2018.01.15
BorderLayout  (0) 2018.01.15

 

본 글은 혼자서 공부한 내용을 정리한 것으로, 

이해하기 어려우실 수 있으므로 도움되는 댓글만 받습니다.  





[ActionListener을 활용해볼 GUI]


ActionListener란 무엇인가 ? 


=> 버튼을 클릭하거나 메뉴를 누르거나 텍스트 필드 등에서 Enter를 눌렀을 때  발생하는 이벤트Listener 

=>ActionListener는 인터페이로 처리합니다. 

=>ActionListener 인터페이스에서 actionPerformed(ActionEvent e ) 메소드가 존재하고 ActionEvent가 발생하면 이 메소드가 호출됩니다.

=>ActionEvent의 메소드 


1) geActionCommand(): 이벤트가 발생한 객체의 텍스트가 리턴됩니다. 

2) getSource(): 이벤트가 발생한 객체의 해시코드가 리턴됩니다.

3) getModifiers(): 이벤트가 발생 했을 때 같이 누른 조합키 (ALT, CTRL SHIFT)의 값이 리턴됩니다.




AWT를 활용한 공부 

AWT를 활요하기 위해서 우선 

해당 클래스에 Frame을 상속시켜주어야합니다.





이후 AWT를 통해 화면을 구현하기 위해 

setResizable(false)   // 화면을 고정시켜주고,

setTitle("이벤트 처리" ) ; // 제목표시줄 

set Bounds( x,y, witdh,height); // x,y는 위치를 저장하고,  width height 크기를 적어줍니다. 





그 다음 형태를 만들어줍시다 

우선 텍스트 필드와 텍스트 에어리어 그리고 버튼 까지 한번 만들어봅시다. 

여기서 패널은  GUI를 하나로 묶어주기 위해서 사용하는데요 

패널에 대한 설명은 아래 한번 읽어보세요 


Panel 

=> 여러 개의 Component들을 묶어두기 위한 GUI  컨테이너 

=> 화면에 출력되는 버튼 같은 Component들은 보통 Frame에 바로 부착하지 않고  Panel에 부착한 뒤 이를 묶어서 Frame에 부착합니다.

=> Panel 이나 Frame에 다른 컴포넌트들을 부착하는 메소드 add(Component)








1) geActionCommand(): 이벤트가 발생한 객체의 텍스트가 리턴됩니다. 





[결과]

복사버튼 클릭시 

종료버튼 클릭시 클릭한 버튼의 인스턴스를 리턴하도록 해보세요 








2) getSource(): 이벤트가 발생한 객체의 해시코드가 리턴됩니다.






3) getModifiers(): 이벤트가 발생 했을 때 같이 누른 조합키 (ALT, CTRL SHIFT)의 값이 리턴됩니다.






3) getModifiers(): 이벤트가 발생 했을 때 같이 누른 조합키 (ALT, CTRL SHIFT)의 값이 리턴됩니다.


ALT를 눌렀을 때 


[3개 전부 출력 결과]



1. 텍스트 필드에 입력 :asd  

2. 입력값 그대로입력 : asd 

3.해시코드 출력: java.awt.Button[button0,144,208,38x23,label=복사]

4. 객체 리턴 : 복사 

5. 이벤트가 발생했을 때 같이 누른 조합키 : 없어서 0출력 








'Java' 카테고리의 다른 글

JOption Pane  (0) 2018.01.16
JFram과 배열을 이용한 스머프 이미지 움직이는 방법.  (0) 2018.01.15
이벤트 라우팅  (0) 2018.01.15
BorderLayout  (0) 2018.01.15
이벤트 처리  (0) 2018.01.15

                //윈도우가 화면에 출력되 전에 수행할 내용

//Frame의 기본 레이아웃은 BorderLayout

//boardlayout이라서 패널을 만들고 

//Panel p = new Panel();을 만든다. 



// 타이틀, 위치, 크기,크기고정 보여주기 옵션 설정

// 윈도우 출력

//FlowLayout을 사용할 때는 일반적으로 크기고정

setResizable(false);

setTitle(" 이벤트 처리 ");

setBounds(100, 100, 375, 350);

setVisible(true);


// 윈도우가 화면에 출력된 후 수행할 내용

'Java' 카테고리의 다른 글

JFram과 배열을 이용한 스머프 이미지 움직이는 방법.  (0) 2018.01.15
AWT를 활용한 ActionListener 사용법  (0) 2018.01.15
이벤트 라우팅  (0) 2018.01.15
이벤트 처리  (0) 2018.01.15
깨달은 거 정리  (0) 2018.01.14

+ Recent posts