본문 바로가기
JAVA

JFrame / JButton / ActionListener()

by 소힌 2022. 1. 3.

 

JFrame 안에 JButton을 추가하고 프레임 창에서 누르면 action이 발생한다

이 action을 구현하려면 이것을 받는 ActionListner가 있어야한다

ActionListener는 인터페이스로 Action에 대한 추상메소드를 가지고 있다

 

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

class MyFrame extends JFrame  {

	public MyFrame() {

		super("나의 프레임"); // 상위 클래스 JFrame의 생성자로 이름을 설정해준다.
		setLayout(new FlowLayout()); // 플로우 레이아웃으로 변경해준다 
		
		setSize(500, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		JButton btn = new JButton("버튼"); // 버튼 이라는 이름을 가진 버튼 생성
		JLabel jlb = new JLabel("0");
		add(jlb);
		add(btn);
		// 버튼을 프레임 안에 넣어주는 것

		ActionListener li = new ActionListener() { 
        // 액션리스너는 인터페이스이다 안에 액션을 받아 돌려주는 메소드 
			public void actionPerformed(ActionEvent e) { 
				String jlbstring = jlb.getText();
				Integer jlbint = Integer.valueOf(jlbstring);
				jlbint++;
				jlb.setText(String.valueOf(jlbint));

			}

		};

		btn.addActionListener(li);

	}

}

public class Main {
	public static void main(String[] args) {
		MyFrame frame = new MyFrame();
		frame.setVisible(true);
	}
}

 

 

 

인스턴스임으로 ActionListner를 받는 클래스를 통해 메소드를 정의하여야하는데

위와 같이 클래스의 이름 없이도 사용이 가능하나 이름이 없기 때문에 생성자는 존재하지 않는다

 

class MyActionListener implements ActionListener {


@Override

public void actionPerformed(ActionEvent e) {

System.out.println("사용자가 버튼을 누름");


}

 

 

1. JButton에 사용가능한 메소드

 

- new JButton().setBounds(150, 150, 100, 100);  // 버튼의 좌표와 크기를 정하는 메소드 

- newJButton().setActionCommand(String string) ; // 해당버튼에 명령 부여하기