Graphics 클래스란? Java에서 화면에 그리기 작업은 Graphics 객체를 통해 이루어지며, 이 객체는 java.awt.Graphics 클래스의 인스턴스입니다. 각 Graphics 객체는 자체적인 좌표계를 가지고 있으며, 문자열(String), 선(line), 사각형(rectangle), 원(circle), 다각형(polygon) 등을 그리는 다양한 메서드를 제공합니다. paint(Graphics g) 메서드를 통해 Graphics 객체에 접근할 수 있습니다. 둥근 사각형을 그리려면 drawRoundRect() 메서드를
JTabbedPane이란? JTabbedPane은 JComponent 클래스를 확장하는 스윙(Swing) 컴포넌트로, 한 번에 하나의 탭만 화면에 표시됩니다. 각 탭은 하나의 컴포넌트와 연결되어 있으며, 사용자가 해당 탭을 선택하면 연결된 컴포넌트가 나타납니다. JTabbedPane은 탭이 선택될 때 ChangeListener 인터페이스를 통해 상태 변경 이벤트를 발생시킬 수 있습니다. 또한 하나의 JTabbedPane 안에 여러 개의 탭을 삽입하는 것도 가능합니다. JTabbedPane의 주요 메서드로는 addTab(), fi
JLabel이란? JLabel 클래스는 JComponent 클래스를 상속하며, JLabel 객체는 GUI 화면에 텍스트 안내나 정보를 표시하는 역할을 합니다. JLabel은 한 줄의 읽기 전용 텍스트, 이미지, 또는 텍스트와 이미지를 함께 표시할 수 있습니다. JLabel은 <font size=글자 크기 color=텍스트 색상> 표시할 텍스트 </font> 태그를 HTML 태그 내부에 사용하면, 서로 다른 색상과 글꼴이 적용된 한 줄의 텍스트도 표시할 수 있습니다. JLabel은 PropertyChangeL
Swing에서 JTextField는 일반 텍스트(plain text) 입력에 사용되는 반면, JFormattedTextField는 JTextField를 확장한 클래스로, 텍스트에 원하는 형식(format)을 지정할 수 있습니다. 대표적으로 전화번호, 이메일, 날짜 등의 형식을 적용할 때 활용됩니다. JTextField란? JTextField는 사용자가 한 줄(single line) 형태로 텍스트를 입력할 수 있게 해주는 Swing의 핵심 컴포넌트 중 하나입니다. 텍스트 필드에 입력이 발생하면 ActionListener 인터페이스
JTextField는 JTextComponent 클래스의 하위 클래스로, 한 줄의 텍스트를 편집할 수 있도록 지원하는 Swing 컴포넌트입니다. JTextField에서 잘라내기, 복사하기, 붙여넣기 기능은 각각 cut(), copy(), paste() 메서드를 호출하는 것만으로 손쉽게 구현할 수 있습니다. 이 메서드들은 JTextField 클래스에 미리 정의되어 있어 별도의 로직 작성 없이 바로 사용할 수 있다는 장점이 있습니다. 메서드 구문 public void cut() public void copy() public void p
JCheckBox는 JToggleButton을 확장한 스윙(Swing) 컴포넌트로, 체크(선택) 또는 체크 해제가 가능한 옵션을 나타냅니다. 여러 개의 체크박스가 있을 경우, 사용자는 이들 옵션 중 원하는 조합을 동시에 선택할 수 있다는 점이 라디오 버튼과 다른 특징입니다.JCheckBox에 테두리를 적용하려면 setBorder() 메서드를 사용하면 되며, 이때 반드시 setBorderPainted(true) 메서드를 호출하여 테두리가 실제로 그려지도록 설정해야 합니다. setBorderPainted()가 false이거나 호출되지
이 프로그램은 Java의 Swing 라이브러리를 활용하여 간단한 카운터(숫자 세기) 애플리케이션을 구현한 예제입니다. 화면에는 JLabel 컴포넌트로 Count:라는 레이블을 표시하고, 현재 숫자 값을 보여주는 JTextField, 그리고 JButton 컴포넌트로 Add(추가), Remove(제거), Reset(초기화) 세 개의 버튼을 배치합니다.각 버튼의 동작 방식은 다음과 같습니다.Add 버튼: 클릭할 때마다 JTextField에 표시된 카운트 값이 1씩 증가합니다.Remove 버튼: 클릭할 때마다 카운트 값이 1씩 감소합니다.
JList는 JComponent 클래스를 확장한 Swing 컴포넌트로, 객체 목록을 화면에 표시하고 사용자가 하나 이상의 항목을 선택할 수 있도록 해줍니다. Java에서 JList의 선택 동작을 제어하려면 ListSelectionModel 인터페이스에서 제공하는 선택 모드를 설정해야 합니다. JList의 3가지 선택 모드 JList에는 총 세 가지 선택 모드가 존재합니다. ListSelectionModel.SINGLE_SELECTION: 한 번에 목록의 단 하나의 인덱스만 선택할 수 있습니다. ListSelectionModel.S
JPanel은 자바 스윙(Swing)에서 사용되는 컨테이너(Container) 클래스로, 그 자체로는 화면에 직접 드러나지 않는 보이지 않는(invisible) 컴포넌트입니다. JPanel의 기본 레이아웃은 FlowLayout이며, 버튼(JButton), 텍스트 필드(JTextField), 라벨(JLabel), 테이블(JTable), 리스트(JList), 트리(JTree) 등 대부분의 컴포넌트를 JPanel 위에 배치할 수 있습니다.JPanel의 배경색을 변경하려면 setBackground() 메서드를 사용하면 됩니다. 이 메서드에
Java AWT에서 Font 클래스는 화면에 표시할 폰트를 설정하고 언어의 문자들을 해당 글리프(glyph)에 매핑하는 역할을 합니다. 반면 FontMetrics 클래스는 특정 화면에서 특정 폰트가 렌더링될 때 필요한 정보를 캡슐화한 폰트 메트릭스 객체를 정의합니다.Font 클래스란?Font 클래스는 Font 객체의 인스턴스를 생성하여 텍스트 그리기, 레이블(label), 텍스트 필드(text field), 버튼(button) 등의 폰트를 지정하는 데 사용됩니다. 폰트는 이름(name), 스타일(style), 크기(size) 세 가
JList의 더블클릭 및 Enter 키 이벤트 처리Swing의 JList는 JComponent 클래스를 확장한 컴포넌트로, 사용자가 목록에서 단일 선택 또는 다중 선택을 할 수 있도록 지원합니다.JList에서 발생하는 다양한 이벤트를 처리하려면 다음과 같은 리스너 인터페이스를 활용할 수 있습니다.ListSelectionListener: 선택 값이 변경될 때 호출되는 추상 메서드 valueChanged()를 포함합니다.MouseListener: 목록에서 더블클릭(double-click) 이벤트를 감지할 때 사용합니다.KeyListen
paint()와 repaint() 메소드란?paint(): 이 메소드는 해당 컴포넌트를 실제로 그리기 위한 명령들을 담고 있습니다. Java Swing에서는 paint() 메소드가 내부적으로 paintBorder(), paintComponent(), paintChildren() 메소드를 호출하기 때문에, paint() 전체를 재정의하는 것보다 paintComponent() 메소드를 재정의하는 것이 권장됩니다. 또한 paint() 메소드는 직접 호출할 수 없으며, 대신 repaint() 메소드를 통해 간접적으로 호출해야 합니다.rep
JViewport란 무엇인가?JViewport 클래스는 Java Swing에서 기본적인 스크롤 모델을 정의하는 핵심 컴포넌트입니다. 이 클래스는 논리적 스크롤(logical scrolling)과 픽셀 기반 스크롤(pixel-based scrolling)을 모두 지원하도록 설계되어 있어, 다양한 종류의 콘텐츠를 유연하게 표시할 수 있습니다.JViewport의 동작 방식은 다음과 같습니다:뷰포트의 자식 컴포넌트인 뷰(view)는 JViewport.setViewPosition() 메서드를 호출하여 스크롤됩니다.JViewport 클래스는
JSeparator란 무엇인가?JSeparator는 Java Swing에서 제공하는 컴포넌트로, 화면상의 다른 구성 요소들을 시각적으로 구분해 주는 수평선 또는 수직선, 혹은 빈 공간(여백)을 의미합니다.JSeparator 클래스는 레이아웃(Layout) 안에서 컴포넌트 사이에 구분선을 그려 넣는 역할을 하며, 이를 통해 사용자 인터페이스를 더욱 깔끔하고 보기 편하게 만들 수 있습니다.주요 특징메뉴나 툴바에 구분선을 추가하는 가장 간단한 방법은 JMenu, JPopupMenu, JToolBar 클래스가 기본으로 제공하는 addSep
JTextArea 클래스는 JTextComponent를 상속받아 사용자가 여러 줄의 텍스트를 입력할 수 있도록 지원하는 Swing 컴포넌트입니다. 또한 JTextArea는 CaretListener 인터페이스를 통해 캐럿(커서) 위치 변경 이벤트를 감지할 수 있습니다. JTextArea 내부의 텍스트에 글꼴을 설정하려면 setFont() 메서드를 사용하면 됩니다. 예제 코드 import java.awt.*; import javax.swing.*; public class JTextAreaTextBoldTest extends JFrame
JTable이란? JTable은 복잡한 데이터 구조를 화면에 표시하기 위해 사용되는 JComponent의 하위 클래스입니다. JTable은 데이터를 행(row)과 열(column) 형태로 표시할 때 MVC(Model View Controller) 디자인 패턴을 따릅니다. DefaultTableModel 클래스는 AbstractTableModel을 확장하며, 이를 활용하면 JTable에 행과 열을 동적으로 추가할 수 있습니다. DefaultTableCellRenderer 클래스는 JLabel 클래스를 확장한 것으로, JTable
JButton은 AbstractButton의 하위 클래스로, Java Swing 애플리케이션에 플랫폼에 독립적인 버튼을 추가할 때 사용됩니다. JButton은 버튼이 눌리거나 클릭되었을 때 ActionListener 인터페이스를 통해 이벤트를 발생시키며, 필요에 따라 MouseListener나 KeyListener 인터페이스도 함께 활용할 수 있습니다. JButton에 단축키 설정하기 JButton에 바로 가기 키(단축키)를 설정하려면 setMnemonic() 메서드를 사용하면 됩니다. 니모닉(mnemonic)으로 지정된 문자는 버
JTableHeader란 무엇인가?JTableHeader는 JComponent 클래스를 상속하는 하위 클래스입니다.JTable 객체를 생성하면 생성자가 새로운 JTableHeader 객체를 자동으로 만들어 테이블 컴포넌트의 헤더를 관리합니다.JTableHeader 객체는 테이블의 컬럼 모델(column model)과 연결되어 있으며, 이를 통해 UI 위임 객체(UI delegate)가 컬럼을 드래그하거나 각 컬럼의 헤더 셀을 렌더링할 수 있습니다.JTable은 setTableHeader() 메서드로 테이블 헤더 컴포넌트의 JTabl
JButton이란? JButton은 AbstractButton의 하위 클래스로, Java Swing 계층 구조에서 가장 기본적이면서도 중요한 컴포넌트 중 하나입니다. 주로 로그인 화면처럼 사용자 입력이 필요한 애플리케이션에서 널리 사용되며, 버튼을 누르거나 클릭하면 ActionListener 인터페이스를 통해 이벤트를 처리할 수 있습니다. JButton에는 텍스트, 아이콘, 또는 텍스트와 아이콘을 함께 설정할 수 있습니다. 특히 Swing 컴포넌트는 내부적으로 HTML 렌더링을 지원하기 때문에, 버튼 텍스트를 <html>
Java Swing에서 JTable을 사용하다 보면 셀을 어떻게 보여줄지와 어떻게 편집할지를 각각 제어해야 하는 상황이 자주 발생합니다. 이때 사용되는 것이 바로 TableCellRenderer와 TableCellEditor입니다. 두 인터페이스는 이름이 비슷하지만 역할이 명확히 다르며, 이를 이해하면 테이블 UI를 훨씬 유연하게 구성할 수 있습니다.TableCellRenderer란?TableCellRenderer는 JTable 셀의 값을 화면에 표시(렌더링)하는 컴포넌트를 생성하는 인터페이스입니다.기본 렌더러는 JLabel을 사용