-
java) Swing 코드 연습 ( JFrame 사용 ) + MnemonicJAVA/멀티스레드, 이벤트 2024. 5. 29. 12:27
▤ 목차
https://hi-hahahoho.tistory.com/26
저번에 정리한 개념의 연장선으로 Swing을 연습해보려고한다.
✔ Swing
- AWT 기술 기반으로 순수 자바 언어로 만들어진 라이브러리이다.
- AWT 기술 + 고급 컴포넌트
- native OS에 의존적이지 않다.
- 만들기는 어렵지만 가볍다.
Swing 특징
- 클래스 이름이 J로 시작한다.
- JComponenet를 상속받는 클래스이다. (인스턴스 생성(new)이 불가능)
- AWT의 Container를 상속받는 클래스(JApplet, JDialog, JFrame ..등)이다.
* JComponent : 스윙 컴포넌트의 공통 속성을 구현한 추상 클래스를말한다.
✔코드로 연습해보기
💻 코드로 보기
import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; //Swing public class Swing extends JFrame implements ActionListener { JLabel lblShow; int count = 0; public Swing() { setTitle("스윙 연습"); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(2, 1)); panel.setBorder(BorderFactory.createEmptyBorder(30, 30, 10, 30)); // 여백 JButton button = new JButton("클릭(c)"); //(c) Mnemonic > swing에만 있는 키이다. button.setMnemonic(KeyEvent.VK_C); button.addActionListener(this); panel.add(button); lblShow = new JLabel("버튼 클릭수 : "); panel.add(lblShow); add(panel, BorderLayout.CENTER); setBounds(200, 200, 300, 300); setVisible(true); super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } @Override public void actionPerformed(ActionEvent e) { // 버튼 클릭 시 처리 count += 1; lblShow.setText("버튼 클릭수 : " + count); } public static void main(String[] args) { new Ex45Swing(); } }
👏 중요
JFrame 또한 Frame을 상속받고 있다는 점은 중요하다.
아래와 같이 JFrame을 상속받아 사용해도 조상의 클래스를 사용할 수 있다.
이를 통해 아래의 코드를 보자.
addWindowListener(....); //윈도우 종료 코드, 아래도 동일한 기능 # JFrame을 상속받으면 더 간단하게 사용할 수 있다. # 다만 오른쪽 상단 종료키를 누르려면 위의 코드를 사용해야한다. super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
✔ Mnemonic
✨니모닉이란?
문자, 단어, 패턴 등을 통해 정보를 쉽게 기억할 수 있도록 도와주는 성질을 의미한다.
니모닉 코드는 연상 기호코드라고 불리는데, 컴퓨터가 읽을 수 있는 기계어와 일대일로 대응하는 인간이 기억하기 쉽도록 문자를 사용한 명령어이다.
이클립스 프로그램에 상단 메뉴바를 보자.
alt 키를 누르면 특정 문자 밑에 밑줄이 생긴다.
우리는 프로그램을 사용할때 단축키를 활용함으로 마우스의 사용을 줄 효율성을 높이려고한다.
자바에서 스윙으로 프로그램을 만들면서 스윙에서 제공해주는 키이벤트가 있다.
메뉴를 넘어가는 것이다.
💻 코드로 보기
JButton button = new JButton("클릭(c)"); //(c) Mnemonic > swing에만 있는 키이다. button.setMnemonic(KeyEvent.VK_C);
✔ Accelerator
Mnemonic과 비슷하지만 메뉴를 선택하지 않고 단축키로 메뉴 아이템을 선택하는 방법이 있다.
Accelerator이다.
💻 코드로 보기
mnuCopy = new JMenuItem("복사(c)"); mnuCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
😊정리
JFrame은 생각보다 다양한 기능을 제공한다.
윈도우 11에서 보이는 창들보다는 조금 촌스러운 감이 있다. 특히 Frame 클래스가 더욱 그렇다.
오랜만에 보는 디자인이지만 만들어보고 싶은 프로그램이 생겼다.
지뢰찾기 게임!
아직 해보지 못했지만 JFrame을 사용해서 만들어볼 수 있을 것같다.
https://raccoonjy.tistory.com/18
'JAVA > 멀티스레드, 이벤트' 카테고리의 다른 글
java) Swing 키보드 이벤트 + Frame창 이미지 이동시키기(+Toolkit) (0) 2024.05.30 java) 메모장 만들기 2) 나가기, 복사, 붙여 넣기, 잘라내기, 삭제, 글꼴크기, 모달창 띄우기 (0) 2024.05.28 java) 메모장 만들기 3) 윈도우 계산기 띄우기, 브라우저 실행하기, 팝업 메뉴 (+Desktop 클래스 / URI 클래스) (0) 2024.05.28 java) 메모장 만들기 1) 메뉴 + 열기 + 저장 (0) 2024.05.27 java 리스너 이벤트 처리 방법 (익명 객체, 내부 클래스) (0) 2024.05.24