자바 스윙 그래픽 사용자 인터페이스(GUI ) 자바 프로그램의 경우. Java Swing은 Abstract Windows Toolk라는 이전 API를 기반으로 개발되었습니다. 그것(AWT). Java Swing은 AWT보다 풍부하고 정교한 GUI 구성 요소를 제공합니다. GUI 구성요소는 단순한 수준에서 복잡한 수준까지 다양합니다. 나무 및 테이블 . Java Swing은 플러그 가능한 모양과 느낌을 제공합니다. 기본 플랫폼과 독립적인 Java 프로그램의 모양과 느낌을 허용합니다.
자바 스윙의 특징
Java Swing은 플랫폼에 독립적이며 MVC(Model View and Controller) 프레임워크를 따릅니다.
- 플러그 가능한 모양과 느낌 - Java Swing은 여러 모양과 느낌 을 지원합니다. 현재 Windows를 지원합니다. , UNIX , 모티프 , 및 기본 Java 금속 모양과 느낌 사용자가 응용 프로그램을 다시 시작하지 않고도 런타임에 모양과 느낌을 전환할 수 있습니다. 이를 통해 사용자는 자신에게 가장 적합한 모양과 느낌을 즉시 선택할 수 있습니다.
- 경량 구성 요소 - 모든 Java 스윙 구성요소는 경량입니다. 일부 최상위 컨테이너 제외 . 경량 구성 요소가 그래픽 의 그리기 기본 요소를 사용하여 자체적으로 렌더링하거나 칠함을 의미합니다. 호스트 운영 체제(OS ). 결과적으로 애플리케이션 프레젠테이션이 더 빠르게 렌더링되고 더 적은 메모리를 사용합니다. AWT와 같은 이전 Java GUI 애플리케이션보다.
- 간단한 MVC - Java Swing은 단순화된 Model-View-Controller 아키텍처를 사용합니다. (MVC ) model-delegate라고 하는 각 구성요소의 핵심 디자인 . 이 아키텍처를 기반으로 하는 각 Java Swing 구성 요소에는 모델 이 포함됩니다. 및 UI 대리인 보기 를 래핑합니다. 및 컨트롤러 MVC 아키텍처 . UI 대리자 화면 페인팅 및 GUI 이벤트 처리를 담당합니다. 모델은 구성 요소의 정보 또는 상태를 유지 관리하는 역할을 합니다.
예시
import javax.swing.*; import java.awt.*; import java.awt.event.*; // model part class Model { private int x; public Model() { x = 0; } public Model(int x) { this.x = x; } public void setX(){ x++; } public int getX() { return x; } } // view part class View { private JFrame frame; private JLabel label; private JButton button; public View(String text) { frame = new JFrame("View"); frame.getContentPane().setLayout(new BorderLayout()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(200,200); frame.setVisible(true); label = new JLabel(text); frame.getContentPane().add(label, BorderLayout.CENTER); button = new JButton("Button"); frame.getContentPane().add(button, BorderLayout.SOUTH); } public JButton getButton() { return button; } public void setText(String text) { label.setText(text); } } // controller part class Controller { private Model model; private View view; private ActionListener actionListener; public Controller(Model model, View view) { this.model = model; this.view = view; } public void contol() { actionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { linkBtnAndLabel(); } }; view.getButton().addActionListener(actionListener); } private void linkBtnAndLabel() { model.setX(); view.setText(Integer.toString(model.getX())); } } // main class public class Main { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { // Look and Feel, Java Look and Feel UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception ex) { } Model model = new Model(0); View view = new View("-"); Controller controller = new Controller(model,view); controller.contol(); } }); } }
출력