728x90
반응형

자바 34

자바 UI - Swing (2D 그래픽스)

2D 그래픽스UI 프로그램에서 윈도우 창이나 버튼, 이미지 등은 모두 화면에서 드로잉(drawing)된 2D그래픽이다.Swing은 개발자가 코드로 2D 그래픽을 드로잉하도록 Java2D API를 제공한다. Canvas와 Graphics손으로 그림을 그리기 위해서는 도화지와 붓이 필요하듯이 Swing에서도 그런 역할을 하는 클래스 가 있다.도화지는 Canvas 클래스이고, 붓은 Graphics 클래스이다. Canvas는 최초 드로잉 준비가 되면 paint() 메소 드를 호출해서 Graphics로 드로잉을 한다.그리고 다음과 같은 경우에 paint() 메소드를 다시 호출하 여 Graphics로 재 드로잉을 한다.도화지가 축소되었다가 다시 확대했을 때도화지의 크기가 변경되었을 때도화지가 숨겨졌다가 다시 나..

자바 2023.02.20

자바 UI - Swing ( 다이얼로그)

다이얼로그다이얼로그(Dialog)는 주 윈도우에서 사용자의 선택 또는 입력을 위해서 띄우는 서브 윈도우이다.다이얼로그를 띄우는 주 윈도우를 부모(parent) 윈도우 또는 소유자(owner) 윈도우라고 한다. 다이얼로그는 모달(modal)과 모달리스(modalless) 두 가지 종류가 있다. 모달 다이얼로그는 다이얼로그를 닫기 전까지 부모 윈도우를 사용할 수 없는 다이얼로그를 말한다.모달리스 다이얼로그는 부모 윈도우를 계속 사용할 수 있는 다이얼로그를 말한다. 다이얼로그의 기본은 모달이다 다이얼로그를 띄울 때는 소유자 윈도우가 반드시 필요하다. 소유자 윈도우는 JWindow, JFrame 등이 될 수 있고, JDialog에서 또 다른 JDialog를 생성할 수 있기 때문에 JDialog도 소유자 윈도우..

자바 2023.02.20

자바 UI - Swing (툴바 컴포넌트)

툴바 컴포넌트툴바는 메뉴바 아래에 위치하고 주로 버튼들이 배치되는 컨테이너이다.메뉴보다는 빠르게 원하는 기능을 마우스로 선택할 수 있기 때문에 사용자들은 메뉴보다는 툴바를 더 선호한다. 컴포넌트설명JToolBar툴바 생성을 위한 컴포넌트JToolBar.Separator버튼들을 그룹 짓기 위해 공백을 제공하는 컴포넌트 최상위 레벨 컨테이너에서 JToolBar를 상단에 배치하는 방법은 JToolBar를 생성한 뒤 BoardLayout을 이용해서 북쪽에 배치하면 된다 JToolBar 내부에 컴포넌트가 추가되지 않으면 JToolBar가 북쪽에 위치하더라도 보이지 않는다JToolBar jToolBar = new JToolBar();jFrame.getContentPane().add(jToolBar, Borde..

자바 2023.02.20

자바 UI - Swing (메뉴 컴포넌트)

메뉴 컴포넌트UI 프로그램에서 메뉴는 빠질 수 없는 구성 요소이다. Swing은 메뉴 생성을 위해 다음과 같은 컴포넌트를 javax.swing 패키지에서 제공한다. 컴포넌트설명JMenuBar메뉴바 컴포넌트JMenu주 메뉴 및 자식 메뉴 아이템을 갖는 서브 메뉴 컴포넌트JPopupMenu팝업 메뉴 컴포넌트JMenuItem메뉴 아이템 컴포넌트JCheckBoxMenuItemJCheckBox로 선택할 수 있는 메뉴 아이템 컴포넌트JRadioButtonMenuItemJRadioButton으로 선택할 수 있는 메뉴 아이템 컴포넌트JSeparator메뉴를 수직 또는 수평으로 분리시키는 컴포넌트 각 컴포넌트의 사용 위치를 그림으로 표시 메뉴 생성 메뉴를 생성하기 위해서는 제일 먼저 JMenuBar를 생성하고..

자바 2023.02.17

자바 UI - Swing (트리 컴포넌트)

트리 컴포넌트트리 컴포넌트는 계층적인 데이터를 표시하는 컴포넌트이다. Swing은 트리 컴포넌트로 JTree를 제공한다. JTree는 하나의 루트 노드(root node) 아래에 여러 개의 자식 노드(child node)를 가지며, 자식 노 드는 또 다시 자식 노드를 가질 수 있다. 동일한 부모 노드parent node를 갖는 노드들을 묶어서 형제 노드sibling node라고 부르는데,다음 그림에서 친구1과 친구2는 형제 노드이다. 자식 노드가 없는 마지막 노드는 잎사귀 노드라고 해서 리프(leaf) 노드라고 부른다. 트리 생성JTree를 생성하려면 생성자의 매개값으로 루트 노드를 대입해야 하는데, 루트 노드는 DefaultMutableTreeNode로 생성한다.DefaultMutableTreeNo..

자바 2023.02.17

자바 UI - Swing (테이블 컴포넌트)

테이블 컴포넌트JTable은 테이블 형식의 데이터를 표시하고 편집할 수 있는 컴포넌트이다.JTable은 다른 컴포넌트에 비해서 다소 복잡한 구조로 이루어져 있다 테이블은 컬럼(column)과 행(row)으로 구성되어 있고, 컬럼과 행이 만나는 곳이 셀(cell)이다.셀은 실제 데이터가 표시되는 곳이다.하나의 컬럼을 구성하는 셀들은 동일한 데이터 타입을 가져야 한다 테이블 생성 간단한 JTable 객체를 만들기 위해서는 먼저 컬럼 이름을 포함하고 있는 1차원 String 배열과 셀의 데이터인 2차원 Object 배열을 생성해야 한다. 그리고 이들을 JTable 생성자를 호출할 때 매개 값 으로 넘겨준다 이름과 나이 컬럼으로 구성된 테이블을 생성하는 방법import java.awt.BorderLayout..

자바 2023.02.17

자바 UI - Swing (리스트 컴포넌트)

리스트 컴포넌트리스트 컴포넌트는 목록 중에서 항목을 선택할 수 있는 컴포넌트를 말한다.리스트 컴포넌트에는 JList, JComboBox가 있다. JList는 목록에서 하나 이상의 항목을 선택할 수 있고, JComboBox는 버튼을 클릭했을 때 목록이 보이고, 그 중 하나를 선택할 수 있다 JListJList는 목록에서 하나 이상의 항목을 선택할 수 있는 컴포넌트이다. JList의 항목은 다음과 같이 배열로 주거나.String[] stringItems = { "one", "two", "tree", "four" };JList jList = new JList(stringItems); Vector 객체로 줄 수 있다.Vector items = new Vector();items.add("one");items.a..

자바 2023.02.17

자바 UI - Swing (채팅창 텍스트 입력 후 내용을 엔터키 누르고 전송)

채팅창을 흉내내어 입력한 내용을 엔터키 누르고 전송하면 JTextArea에 출력 채팅을 치고 엔터키를 누르면 전송하는 방법import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.SwingUtilities;public class JTextAreaExamp..

자바 2023.02.16

자바 UI - 04) Swing (텍스트 컴포넌트)

텍스트 컴포넌트텍스트 컴포넌트는 텍스트를 나타내거나 편집할 수 있는 컴포넌트를 말한다.텍스트 컴포넌트에는 JLabel, JTextField, JPasswordField, JTextArea, JEditorPane, JTextPane 등이 있다.JLabel만 텍스트를 편집할 수 없고, 나머지는 텍스트를 편집할 수 있다.편집 가능한 텍스트 컴포넌트는 모두 JTextComponent를 상속받아 각 컴포넌트의 특징에 맞게 설계되었다.JTextField와 JPasswordField는 단일 라인의 텍스트를 편집할 수 있고, JTextArea, JEditorPane, JTextPane은 멀티 라인 편집을 지원한다. JLabelJLabel은 편집할 수 없는 한 줄의 간단한 텍스트와 정적인 이미지를 보여주는 컴포넌트이다..

자바 2023.02.16

자바 UI - Swing (RadioButton 응용)

라디오 종류러시안블루라가머핀라팜맹크스 JRadioButton 버튼을 4개로 만들어서 만들기 import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ButtonGroup;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.SwingUtilities;public class Ra..

자바 2023.02.16
728x90
반응형