JButton
자바의 JButton은 버튼 컴포넌트이다.
클릭했을 때 이벤트를 발생시키는 액션 리스너를 달 수 있다.
또한 여러가지 함수들을 제공한다
먼저 JFrame을 상속받은 MyFrame을 만들고 ActionListener를 implements 했다.
그러면 반드시 구현해줘야 하는 actionPerformed() 함수가 생긴다.
public class MyFrame extends JFrame implements ActionListener {
JButton button = new JButton();
MyFrame() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(null);
this.setSize(500,500);
this.add(button);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == button) {
System.out.println("log");
}
actionPerformed() 안에 버튼을 클릭했을때 발생시킬 이벤트를 담을 수 있다.
간단하게 "log"를 콘솔창에 찍어보도록 작성해보았다.
button.setBounds(200,100,300,350);
button.addActionListener(this);
위와 같이 버튼을 만들어주고, 액션 리스너를 달아주고
프레임에 버튼을 add() 해준다.
참고로 아래와 같은 방법으로 ActionListener() 메소드를 오버라이딩 하지 않고 Button에 ActionListener 달 수 있다.
JButton button = new JButton();
button.addActionListener(e -> System.out.println("log"));
JButton는 다양한 함수를 가지고 있다.
button.setBounds(200,100,300,350); //버튼의 위치와 크기
button.addActionListener(this); //버튼에 액션리스너 달기
button.setText("i'm a button"); //버튼에 텍스트 넣기
button.setFocusable(false); //포커스 제거
button.setIcon(icon); //아이콘 추가하기
button.setHorizontalTextPosition(JButton.CENTER); //버튼의 텍스트 위치
button.setVerticalTextPosition(JButton.BOTTOM); //버튼의 텍스트 위치
button.setFont(new Font("Comic sans", Font.BOLD,25)); //텍스트 폰트
button.setIconTextGap(-15); //텍스트와 아이콘 사이의 차이
button.setForeground(Color.cyan); //버튼 텍스트의 색상
button.setBackground(Color.LIGHT_GRAY); //버튼의 배경 색상
button.setBorder(BorderFactory.createEmptyBorder()); //테두리 제거
ImageIcon icon = new ImageIcon("rabbit.png");
ImageIcon으로 rabbit 아이콘을 컴포넌트를 만들고
버튼에 setIcon 해주었다.
여기서 만약 actionPerformed() 에 setEnabled을 false를 하면
버튼을 한번 클릭하고 나면 사용할수 없게 만들 수 있다.
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == button) {
button.setEnabled(false); //사용할 수 없게
}
}
여기서 만약 레이블을 추가하고, 버튼을 클릭했을 때 옆에 레이블이 나타나게 만들 수도 있다.
먼저 생성자 위에 컴포넌트 레이블을 추가하고 settext로 쓰고 싶은 문구를 넣는다
처음에는 label.setVisible을 false로 한다.
JLabel label = new JLabel();
MyFrame() {
label.setText("rabbit dead");
label.setBounds(150,250,150,150);
label.setFont(new Font("Comic sans", Font.BOLD,25));
label.setForeground(Color.red);
label.setVisible(false);
}
그리고 버튼이 클릭되었을 때 label.setVisible을 true로 한다.
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == button) {
button.setEnabled(false); //사용할 수 없게
label.setVisible(true);
}
}
버튼을 클릭하면 오른쪽과 같이 문구가 나타난다.
'Today I Learned' 카테고리의 다른 글
자바 GUI 기초 - JOptionPane (0) | 2022.11.06 |
---|---|
JAVA GUI : Create New Window (0) | 2022.11.06 |
JAVA LayoutManager(배치관리자) : FlowLayout, GridLayout (0) | 2022.11.05 |
JAVA LayoutManager(배치관리자) : BorderLayout (0) | 2022.11.05 |
자바 GUI 기초 - JFrame, JLabel, JPanel (0) | 2022.10.29 |