Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 Java Swing의 아키텍처를 설명합니까?


자바 스윙 그래픽 사용자 인터페이스(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();
         }
      });
   }
}

출력

Java에서 Java Swing의 아키텍처를 설명합니까?