반응형
SMALL

Java에서 이벤트 기반 프로그램밍은 Keybord입력, Mouse클릭등 사용자의 액션션에따라 이벤트가 발생합니다. 

● 이벤트 소스 : 이벤트를 발생시킨 GUI컴포넌트이다.

● 이벤트 객체 : 이벤트 발생시 이벤트 종류, 소스 이벤트가 발생한 화면, 

   마우스 버튼 종류, 키으 코드 값등 이벤트 속성 값을 가진 객체이다.

● 이벤트 리스너: 이벤트 처리하는 코드로서 컴포넌트에 등록해야합니다.

● 이벤트분배스레드: 무한 루프를 실행하는 스레이다. 자바가 가상 기계로부터 이벤트의 발생을 통지받으면 이벤트 소스와 이벤트 종류를 결정하고 이벤트 객체를 생성하여 이벤트 리스너를 찾아 호출합니다.


MuouseListener 이벤트로 사용하므로 나온 결과입니다.

위의 실행을 결과를 얻기위해서는 아래와 같이 작성하시면 됩니다.


MouseEV클래스를 만든다음 인터페이스로 MouseListener 추상메소드를 상속받야합니다. @Override 다 구현해주고 필요한 메소드기능을 사용하시면됩니다.


public void mouseClicked(MouseEvent e) {

JButton btn = (JButton)e.getSource(); 마우스가 올라간 버튼의 주소 소스입니다.

btn.setBackground(Color.CYAN);   마우스가 올라간 곳에 배경색을 나타냅니다.

public void mouseExited(MouseEvent e){

JButton btn =(JButton)e.getSource(); 마우스 올라간 버튼의 주소를 선택

btn.setBackground(Color.LIGHT_GRAY);

class Event에서 JButton jb = new JButton(); 생성합니다.

MouseEV 클래스 생성합니다. MouseEv me = new MouseEv();

jb.addMouseListener(me); JButtonMouseListener MouseEV 붙착합니다.

그리고 마지막으로 add(jb) 컴포넌트에 JButton을 부착합니다.

반응형
LIST
반응형
SMALL

Java GUI에서 Layout에 대하여 알아보겠습니다. JFrame을 상속받으면 AWT와 SWing 메소드를 사용할수 있습니다. Layout은 FlowLayout ,BorderLayout, GridLayout 과 layout을 NUll로 표시해서 사용할수 있습니다.


 FlowLayout

  왼쪽부터 순서대로 오른쪽으로 배치하는 기능입니다.

 BorderLayout

  컨테이너의 공간을 위쪽,아래,왼쪽,오른쪽,중앙으로 배치하는 기능입니다.

 GirldLayout

  컨테이너의 공간을 2차 그리드로 나누고, 입력하는 순서대로 우로, 위에서 

  아래로 배치합니다.

 CardLayout

  글자 그래도 카드쌓듯이 컴포넌트를 배치하는 기능이빈다.


→ BorderLayout 메소드와 출력입니다.

《 소 스 설 명》

setTitle("BorderLayout Sample"); 제목을 넣어습니다.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 윈도우 창을 닫으면 프로그램을 종료하는 메소드입니다.

Container con = getContentPane(); 컨테이너를 불러오는 코드입니다.

con.setLayout(new BorderLayout()); 컨테이너에 BorderLayout을 만들겠다는 코드입니다.

con.add(new JButton("중앙"),BorderLayout.CENTER); 커테이너에 버튼동작을 만들고 그 버튼을 중앙에 베치하게다는 코드입니다.

각각 버튼들을 생성하여 왼쪽,오른쪽, 위,아래로 배치하시면 됩니다.


→ GridLayout 

Container con = getContentPane(); 컨터에너에 불러옵니다.

GridLayout grd = new GridLayout(4,2) 4행2열을 만드는 코드입니다.

grd.setVgap(5); grid사이를 수직 간격으로 5픽셀로 설정합니다.

con.setLayout(grd); 컨터이너에 Gridlayout 부착합니다.

con.add(new JLabel("무슨확과?"): JLabel을 new로 생성합니다. 

con.add(new JTextField("")); JTextField을 new로 생성합니다. 


→ layout을 null

Container con =getContentPane(); 컨터에너를 불러옵니다.

con.setLayout(null); layout을 따로 만들기 않겠다는 코드입니다.

JLabel j = new JLabel("if you love me, press Button? O.k?); Layout 대신

JLabel 기능을  부착해도 됩니다. JLabel 부착후 글자를 넣오 보이도록

코드를 만들었습니다.

J.setLocation(130,50); j 위치를 130,50으로 지정합니다.

j.setSize(200,20); J 200*20으로 크기를 지정합니다.

con.add(j); JLabel 을 컨텐트팬에 부착합니다.

for(int i=i; i<=9; i++){

JButton jb= new JButton(Integer.toString(i)); 버튼을 9개를 생성하고 그 속에

integer.toString(i); 숫자 i이는 1~9까지 를 넣게다는 코드입니다.

jb.setLoation(i*13, i*15); 버튼이 한개씩 생성할때마다 버튼의 위치는 

겹치지 않게 i*13,i*15만큼씩 이동해서 생성됩니다.

jb.setSize(45,45); 버튼의 크기를 설정합니다.

con.add(jb); 생성된 버튼을  컨테이너에 부착합니다.

여기서 중요한건, 버튼을 JLabel에 부착하시면 안됩니다.

 




반응형
LIST

+ Recent posts