자바 GUI 버튼 클릭 - jaba GUI beoteun keullig

자바에서 각각 컴포넌트에 맞는 이벤트 처리방식이있다.

먼저 간단히 버튼에 대한 이벤트 처리 방법을 알아보자.

GuiEvent3(){ setSize(500,300); setTitle("이벤트 실행"); Container c = getContentPane(); c.setLayout(new FlowLayout()); JButton j = new JButton("사과"); j.addActionListener(this); c.add(j); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public void actionPerformed(ActionEvent e) { JButton b = (JButton)e.getSource(); if(b.getText() == "사과") { b.setText("배"); }else { b.setText("사과"); }

j 라는 버튼이 눌리면 actionPerformed(ActionEvent e) 클래스가 동작하게되는데

먼저 지금 이벤트를 발생한 버튼이 누구인지 getSource() 를 이용해서 받아온후 동작을한다.

위의 코드는 버튼의 텍스트가 사과라면 그 이름을 배로 바꾸고 , 배라면 사과로 바꾸는 코드이다.

버튼을 누를때마다 사과 와 배 가 바뀐다.

같은 방법으로 버튼을 누르면 버튼의 색상이 변경되게 할수있다.

JButton b = (JButton)e.getSource(); if(b.getText() == "사과") { b.setText("맛있다"); }else { b.setBackground(Color.green); }

처음의 텍스트가 사과라면 맛있다로 , 그다음에 누르면 버튼의 색상을 초록색으로 바꾼다.

버튼의 색이 바뀐모습.

마우스 리스너

마우스는 키보드와 다르게 이벤트를 처리하기위해서는 5개의 구조가 필요하다.

c.addMouseListener(this); } public void mousePressed(MouseEvent e) { //마우스를 눌렀을때 } public void mouseRelesed(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { }

마우스가 클릭되었을때의 이벤트 처리를해보자.

public class GuiEvent3 extends JFrame implements ActionListener,MouseListener { JLabel la = new JLabel("Hello~world"); GuiEvent3(){ setSize(500,300); setTitle("이벤트 실행"); Container c = getContentPane(); c.setLayout(null); la.setSize(50,20); la.setLocation(30,30); c.add(la); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); c.addMouseListener(this); } public void mousePressed(MouseEvent e) { //마우스를 눌렀을때 int x = e.getX();//마우스클릭 x 좌표 int y = e.getY(); la.setLocation(x,y); } public void mouseRelesed(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { }

먼저 좌표 30,30에 Hello~world 라는 문자가 화면에 보여지는데

마우스가 클릭되었을때 그 마우스의 좌표를 얻어와서 문자를 화면에 다시 배치시키는 모습이다.

마우스로 클릭하면 따라온다.

위처럼 여러 메소드를 다 만들기 힘드니까 이걸 쉽게할수있는 어댑터 클래스가있다.

어댑터 클래스

public class GuiEvent3 extends JFrame implements ActionListener,MouseListener { JLabel la = new JLabel("Hello~world"); GuiEvent3(){ setSize(500,300); setTitle("이벤트 실행"); Container c = getContentPane(); c.setLayout(null); la.setSize(50,20); la.setLocation(30,30); c.add(la); c.addMouseListener(new myAdpter()); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); c.addMouseListener(this); } class myAdpter extends MouseAdapter{ public void mousePressed(MouseEvent e) { //마우스를 눌렀을때 int x = e.getX();//마우스클릭 x 좌표 int y = e.getY(); la.setLocation(x,y); } }

이렇게 내부클래스로 구현해서 사용할수있다.

공유하기

게시글 관리

구독하기K4keye

'Language > JAVA' 카테고리의 다른 글

[JAVA] 메뉴바,메뉴아이템 기능 사용  (0)2019.05.22[Java] 자바SWing 체크박스 생성 , 계산기구현  (0)2019.05.22[JAVA] GUI 컴포넌트 들과 이미지  (0)2019.05.22[JAVA] GUI 메뉴바 , 메뉴 , 메뉴창 , 서브메뉴 만들기  (0)2019.05.22[JAVA] Swing , Panel, 배치관리자  (0)2019.05.22

반응형

자바(Java) AWT – Button 컨트롤 사용법과 예제

 

환경 : Eclipse Mars, Android 4.2.2, JDK 1.7

 

버튼 컨트롤은 라벨을 포함하고 있으며, 눌렀을 때 이벤트가 발생합니다. 다시 말하면 마우스로 버튼을 누르거나 놓았을 때 AWT ActionEvent 를 발생시킵니다. 버튼이벤트가 일어나는 구조는 다음과 같습니다. 처음에 버튼이 클릭되면 내부에 processEvent() 함수가 무조건 호출됩니다. 이 함수는 모든 버튼이벤트는 이 함수를 거쳐 갑니다. 이 버튼이벤트는 어떤 버튼이 클릭했는지 구분하여 해당하는 버튼의 processActionEvent() 함수를 호출합니다.

 

processActionEvent() 호출한 이벤트를 받을려면 버튼마다 리스너 객체를 셋팅해야 합니다. addActionListener() 함수를 사용해 등록하시면 됩니다. 

btnOk.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { statusLabel.setText("Ok Button clicked."); } });

 

ActionListener 객체를 등록하는데 필수 구현함수인 actionPerformed() 등록하시면 됩니다. 최종적으로 이벤트가 오게되면 이 함수의 인수로 ActionEvent 가 넘어오면서 실행 되게 되는 것이죠. 인수로 넘어온 ActionEvent 객체로 어떤 곳에서 이벤트가 발생했는지 알수 있습니다. 마우스인지? 윈도우이벤트 인지 등등..

 

 

이렇게 버튼마다 ActionListener 모두 등록해야 각각의 버튼이 크릭했을 때 따로 이벤트를 받을수 있겠죠. 3개의 버튼에 ActionListener 객체를 추가한 후 Panel add() 함수를 이용해 붙입니다.

 

btnOk.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { statusLabel.setText("Ok Button clicked."); } }); btnSubmit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { statusLabel.setText("Submit Button clicked."); } }); btnCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { statusLabel.setText("Cancel Button clicked."); } });

 

아래는 버튼 샘플을 구현한 전체 소스 입니다.


import java.awt.Button; import java.awt.FlowLayout; 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.WindowAdapter; import java.awt.event.WindowEvent; public class AwtButtonControl { private Frame mainFrame; private Label headerLabel; private Label statusLabel; private Panel controlPanel; public AwtButtonControl() { prepareGUI(); } public static void main(String[] args) { AwtButtonControl awtControlDemo = new AwtButtonControl(); awtControlDemo.showButton(); } private void prepareGUI() { // Frame 에 대한 셋팅 mainFrame = new Frame("Java AWT 샘플"); mainFrame.setSize(400, 400); mainFrame.setLayout(new GridLayout(3, 1)); mainFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent windowEvent) { System.exit(0); } }); // 상단에 있는 라벨 headerLabel = new Label(); headerLabel.setAlignment(Label.CENTER); headerLabel.setText("Control Test : Button"); // 하단 상태값 라벨 statusLabel = new Label(); statusLabel.setText("Status Lable"); statusLabel.setAlignment(Label.CENTER); statusLabel.setSize(350, 100); controlPanel = new Panel(); controlPanel.setLayout(new FlowLayout()); mainFrame.add(headerLabel); mainFrame.add(controlPanel); mainFrame.add(statusLabel); mainFrame.setVisible(true); } private void showButton() { Button btnOk = new Button("OK"); Button btnSubmit = new Button("Submit"); Button btnCancel = new Button("Cancel"); btnOk.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { statusLabel.setText("Ok Button clicked."); } }); btnSubmit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { statusLabel.setText("Submit Button clicked."); } }); btnCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { statusLabel.setText("Cancel Button clicked."); } }); controlPanel.add(btnOk); controlPanel.add(btnSubmit); controlPanel.add(btnCancel); mainFrame.setVisible(true); } }

 

AWT 를 실행한 화면이며 각 버튼 클릭시 이벤트를 발생시켜 아래 라벨에 값을 변경합니다.

 

 

반응형

공유하기

게시글 관리

구독하기녹두장군 - 상상을 현실로

저작자표시 비영리 변경금지

Toplist

최신 우편물

태그