이 기사에서는 Java의 Swing 툴킷을 살펴봅니다. 필수 최상위 컨테이너 역할을 하는 JFrame, JDialog 및 JApplet과 같은 구성 요소를 사용하여 그래픽 사용자 인터페이스(GUI)를 구축하기 위한 라이브러리입니다. 또한 Swing 구성 요소를 사용하여 간단한 문의 양식을 만드는 방법을 보여줍니다.
Swing은 간단한 그래픽 사용자 인터페이스(GUI)를 만드는 데 사용되는 Java 라이브러리입니다. GUI를 구성하기 위한 구성요소 모음을 제공하는 GUI 위젯 툴킷입니다. (Oracle Docs, n.d.a). Swing 구성요소는 전적으로 Java 프로그래밍 언어로 작성되었습니다. 일반적으로 유용한 세 가지 최상위 컨테이너 클래스는 JFrame, JDialog 및 JApplet입니다(Oracle Docs, n.d. b).
최상위 컨테이너:
JFrame은 제목과 테두리가 있는 최상위 창입니다.
(Oracle Docs, n.d.b, 프레임 만드는 방법(기본 Windows).
JDialog 창은 기본 Swing 응용 프로그램 창과 별도로 임시로 인식되는 독립된 하위 창입니다.
(Oracle Docs, n.d.b, 대화 상자 만드는 방법)
“JApplet, Java 애플릿은 Java 기술을 지원하는 브라우저가 인터넷에서 다운로드하여 실행할 수 있는 특별한 종류의 Java 프로그램입니다. 애플릿은 일반적으로 웹 페이지 내부에 포함되어 있으며 브라우저의 컨텍스트에서 실행됩니다. 애플릿은 애플릿의 하위 클래스여야 합니다. 애플릿 클래스. Applet 클래스는 애플릿과 브라우저 환경 간의 표준 인터페이스를 제공합니다.”(Oracle Docs, n.d.c).
Swing 구성 요소를 활용하는 모든 프로그램에는 최소한 하나의 최상위 컨테이너가 포함되어 있습니다. 이 최상위 컨테이너는 컨테이너 내의 모든 Swing 구성 요소를 포함하는 포함 계층 구조의 루트 역할을 합니다(Oracle Docs, n.d.b).
일반적으로 Swing 기반 GUI를 사용하는 독립형 애플리케이션에는 JFrame을 루트로 사용하는 포함 계층 구조가 하나 이상 있습니다. 예를 들어 애플리케이션에 기본 창과 두 개의 대화 상자가 있는 경우 각각 자체 최상위 컨테이너가 있는 세 개의 포함 계층이 있습니다. 기본 창에는 루트로 JFrame이 있고 각 대화 상자에는 루트로 JDialog가 있습니다. 또한 Swing 기반 애플릿에는 JApplet 객체에 의해 루트되는 하나 이상의 포함 계층 구조가 있습니다. 예를 들어, 대화 상자를 표시하는 애플릿에는 두 개의 포함 계층이 있습니다. 브라우저 창 내의 구성 요소는 JApplet 객체를 기반으로 하는 포함 계층에 속하고, 대화 상자는 JDialog 객체를 기반으로 하는 포함 계층에 속합니다.
JComponent 클래스:
최상위 컨테이너를 제외하고 "J"로 시작하는 모든 Swing 구성 요소는 JComponent 클래스에서 파생됩니다. 예를 들어 JPanel, JScrollPane, JButton 및 JTable은 모두 JComponent에서 상속됩니다. 그러나 JFrame 및 JDialog는 최상위 컨테이너이므로 그렇지 않습니다(Oracle Docs, n.d.b, The JComponent Class)
프레임과 패널의 차이점:
프레임:
JFrame은 제목, 테두리, 버튼이 있는 창을 나타내는 최상위 컨테이너입니다.
일반적으로 애플리케이션의 기본 창으로 사용됩니다.
JFrame에는 JPanel, JScrollPane, JButton, JTable 등을 포함한 여러 구성 요소가 포함될 수 있습니다.
패널:
JPanel은 창 내에서 구성 요소 집합을 그룹화하는 데 사용되는 일반 컨테이너입니다.
제목 표시줄이나 닫기 버튼 등 창 장식이 없습니다.
JPanel은 JFrame 내에서 레이아웃을 구성하고 관리하는 데 자주 사용됩니다.
Swing 구성 요소를 활용하는 모든 프로그램에는 최소한 하나의 최상위 컨테이너가 포함되어 있습니다. 이 최상위 컨테이너는 컨테이너 내의 모든 Swing 구성 요소를 포함하는 포함 계층 구조의 루트 역할을 합니다(Oracle Docs, n.d.b).
일반적으로 Swing 기반 GUI를 사용하는 독립형 애플리케이션에는 JFrame을 루트로 사용하는 포함 계층 구조가 하나 이상 있습니다. 예를 들어 애플리케이션에 기본 창과 두 개의 대화 상자가 있는 경우 각각 자체 최상위 컨테이너가 있는 세 개의 포함 계층이 있습니다. 기본 창에는 JFrame이 루트로 있고, 각 대화 상자에는 JDialog가 루트로 있습니다.
Swing 기반 애플릿에는 최소한 하나의 포함 계층 구조가 있으며, 그 중 하나는 JApplet 객체를 기반으로 합니다. 예를 들어, 대화 상자를 표시하는 애플릿에는 두 개의 포함 계층이 있습니다. 브라우저 창 내의 구성 요소는 JApplet 객체를 기반으로 하는 포함 계층에 속하고, 대화 상자는 JDialog 객체를 기반으로 하는 포함 계층에 속합니다.
아래 예에는 JFrame과 JPanel은 물론 GridBagLayout을 사용하는 버튼, 텍스트 필드, 라벨과 같은 추가 구성 요소가 포함되어 있습니다. 또한 JDialog, JOptionPane 구성 요소 및 Dialog 창 구성 요소를 사용하여 메시지도 표시합니다. Swing 컴포넌트를 이용한 간단한 그래픽 사용자 인터페이스(GUI) 문의 양식입니다.
//--- Abstract Window Toolkit (AWT) // Provides layout manager for arranging components in five regions: // north, south, east, west, and center. import java.awt.BorderLayout; // Grid layout - Specifies constraints for components that are laid out using the GridBagLayout. import java.awt.GridBagConstraints; // Grid - layout manager that aligns components vertically and horizontally, // without requiring the components to be of the same size. import java.awt.GridBagLayout; // Gird padding - Specifies the space (padding) between components and their borders. import java.awt.Insets; // Button - Provides the capability to handle action events like button clicks. import java.awt.event.ActionEvent; // Button event - Allows handling of action events, such as button clicks. import java.awt.event.ActionListener; //--- swing GUI // Button - Provides a button component that can trigger actions when clicked. import javax.swing.JButton; // Frame - Provides a window with decorations // such as a title, border, and buttons for closing and minimizing. import javax.swing.JFrame; // Labels - Provides a display area for a short text string or an image, or both. import javax.swing.JLabel; // Submition Message - Provides standard dialog boxes such as message, input, and confirmation dialogs. import javax.swing.JOptionPane; // Panel - Provides a generic container for grouping components together. import javax.swing.JPanel; // Scroll user message - Provides to the a scrollable view of a lightweight component. import javax.swing.JScrollPane; // User message - Provides a multi-line area to display/edit plain text. import javax.swing.JTextArea; // Name & Email - Provides a single-line text field for user input. import javax.swing.JTextField; /** * This class generates a simple contact form. The form includes fields for the * user's name, email, and message, and a submit button to submit the form. * * @author Alejandro Ricciardi * @version 1.0 * @date 06/16/2024 */ public class contactForm { /** * The main method to create and display the contact form. * * @param args Command line arguments */ public static void main(String[] args) { /*------------ | Frame | ------------*/ // ---- Initializes frame // Creates the main application frame JFrame frame = new JFrame("Contact Form"); frame.setSize(400, 300); // Set the size of the frame // Close the application when the frame is closed frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new BorderLayout()); // Use BorderLayout for the frame /*------------ | Panel | ------------*/ // ---- Initializes panel // Create a panel with GridBagLayout JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gridForm = new GridBagConstraints(); gridForm.insets = new Insets(5, 5, 5, 5); // Add padding around components // ---- Creates and adds grid components to the panel // -- Name // Adds "Name" label JLabel nameLabel = new JLabel("Name:"); gridForm.gridx = 0; // Position at column 0 gridForm.gridy = 0; // Position at row 0 panel.add(nameLabel, gridForm); // Add text field for name input JTextField nameField = new JTextField(20); gridForm.gridx = 1; // Position at column 1 gridForm.gridy = 0; // Position at row 0 panel.add(nameField, gridForm); // -- Email // Add "Email" label JLabel emailLabel = new JLabel("Email:"); gridForm.gridx = 0; // Position at column 0 gridForm.gridy = 1; // Position at row 1 panel.add(emailLabel, gridForm); // Adds text field for email input JTextField emailField = new JTextField(20); gridForm.gridx = 1; // Position at column 1 gridForm.gridy = 1; // Position at row 1 panel.add(emailField, gridForm); // Adds "Message" label JLabel messageLabel = new JLabel("Message:"); gridForm.gridx = 0; // Position at column 0 gridForm.gridy = 2; // Position at row 2 panel.add(messageLabel, gridForm); // -- Message // Adds text area for message input with a scroll pane JTextArea messageArea = new JTextArea(5, 20); JScrollPane scrollPane = new JScrollPane(messageArea); gridForm.gridx = 1; // Position at column 1 gridForm.gridy = 2; // Position at row 2 panel.add(scrollPane, gridForm); // Adds "Submit" button JButton submitButton = new JButton("Submit"); gridForm.gridx = 1; // Position at column 1 gridForm.gridy = 3; // Position at row 3 panel.add(submitButton, gridForm); // Adds the panel to the frame's center frame.add(panel, BorderLayout.CENTER); // Make the frame visible frame.setVisible(true); /*------------ | JDialog | ------------*/ // Add action listener to the submit button ActionListener submitBtnClicked = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // Display a message dialog when the submit button is clicked JOptionPane.showMessageDialog(frame, "Message was sent!"); } }; submitButton.addActionListener(submitBtnClicked); } }
대화 상자 창에 대해 더 자세히 알고 싶다면 JDialog JOptionPane 메시지 구현 방법을 설명하는 다음 동영상을 시청하세요.
요약하자면, Java의 Swing 툴킷은 개발자가 사용자 친화적이고 시각적으로 구조화된 GUI를 만들 수 있는 구성 요소 세트를 제공합니다. 라이브러리는 JPanel 및 JOptionPane과 같은 필수 요소와 함께 JFrame, JDialog 및 JApplet과 같은 최상위 컨테이너를 사용합니다.
참고자료:
오라클 문서. (n.d.a). 스윙. 신탁. https://docs.oracle.com/javase/8/docs/technotes/guides/swing/
오라클 문서. (n.d.b). 최상위 컨테이너 사용. Java™ 자습서. 신탁. https://docs.oracle.com/javase/tutorial/uiswing/comComponents/toplevel.html
오라클 문서. (n.d.c). 자바 애플릿. Java™ 자습서. 신탁. https://docs.oracle.com/javase/tutorial/deployment/applet/index.html
2024년 11월 3일 Alex.omegapy가 Medium에서 원본 게시.
위 내용은 Swing 구성 요소를 사용하여 Java GUI 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!