[Study #42] 자바의 그래픽과 jQuery

    반응형

     

    01. 자바의 그래픽

     

    01) 의미

    • CUI (Command Line Interface) : 컴퓨터 사용자와 컴퓨터 시스템이 텍스트 명령어를 사용하여 상호 작용하는 방식
    • GUI (Graphic User Interface) : 사용자가 컴퓨터와 상호 작용할 수 있도록 도와주는 시스템 또는 소프트웨어의 일부분으로 다양한 사용자 인터페이스 디자인과 기능을 제공함

     

    02) AWT

    • 자바의 초기 GUI 라이브러리로, 윈도우 및 그래픽 요소를 생성하고 관리하는 데 사용
    • 운영체제마다 다른 화면을 구성함
    • 기본적으로 사용되는 AWT 클래스 : Frame, Button, Label, TextField, TextArea, Panel, Layout, Event

    [ AWT 예시 ] 생성자 사용하기

    package jul31;
    
    import java.awt.Button;
    import java.awt.Frame;
    
    public class GUI01 {
    	public GUI01() {
        	Frame frame = new Frame("프레임 입니다");// 창 상단에 뜰 말
    		Button btn = new Button("클릭해");
    			frame.add(btn);
    			frame.setSize(300, 600);
    			frame.setVisible(true);
        }
        
    	public static void main(String[] args) {
    		new GUI01();
        }
    }

    실행화면

     

     

     

    03) Swing

    • 운영체제마다 다른 화면을 보여주는 AWT를 보완하고자 나왔으며 보다 더 풍부한 기능과 Look And Feel을 제공
    • AWT를 기반으로 하지만 더 많은 컴포넌트와 기능을 제공
    • 자바의 코드로 화면을 구성하고 모든 운영체제에서 같은 화면을 구성함
    • 기본적으로 사용되는 Swing 클래스 : JFrame, JPanel, JButton, JLabel, JTextField, JTextArea, JScrollPane, JComboBox, JCheckBox, JRadioButton

    [ Swing 예시 ] 생성자 사용하기

    package jul31;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    
    public class GUI02 {
    	JFrame frame = new JFrame("프레임 입니다.");
    	JButton button = new JButton("클릭");
        
    	public GUI02() {
    		frame.add(button);
    		frame.setSize(300, 600);
    		frame.setVisible(true);
    		// x누르면 닫기
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    	public static void main(String[] args) {
    		new GUI02();
    	}
    }

    실행화면

     

     

    04) JavaFX

    • 자바 1.8 이후에 출시된 GUI 라이브러리로서, Swing과 달리 웹 기술에 기반한 리치한 기능을 제공
    • RIA(Rich Internet Application)를 디자인하고 테스트, 디버그, 배포까지 가능한 일련의 그래픽과 미디어의 통합 패키
    • 다양한 플랫폼과 장치에서 실행할 수 있는 플래폼 독립적인 애플리케이션을 구축하는데 적합
    • 기본적으로 사용되는 JavaFX 클래스 : javafx.application.Application, javafx.stage.Stage, javafx.scene.Scene, javafx.scene.layout, javafx.scene.control.*, javafx.scene.shape.*, javafx.scene.image.*, javafx.scene.media.*, javafx.animation.*, javafx.event.*

     

     

    02. 관련 용어

     

    01) Container

    • 자바에서 창 역할로, 한 개 이상의 컨테이너 위에 컨테이너나 컴포넌트가 올라감
    • 컨테이너는 컴포넌트보다 작은 개념
    • JFrame : 스윙 하위에 있는 frame을 부를 때 사용
    • ex) JFrame, window, panel, dialog, applet

    02) Component

    • 실제로 컨테이너 위에 올려져 화면 구성을 담당
    • ex) Button, TextField, TextArea, List

    03) LayoutManager

    • 컨테이너 위에 컴포넌트들이 올려질 때 자리 배치 방법
    • ex) FlowLayout, BorderLayout, GridLayout, CardLayout

    04) 기본 코드

    • 프레임.add(컴포넌트);
    • 프레임.setSize(int x, int y);
    • 프레임.setVisible(boolean a);

     

     

    03. Swing으로 메모장 만들기

     

    01) 기본 생성자를 사용

    • JMenuItem : 메뉴의 하위 항목 만들기

    JMenuItem의 예시

     

    • 하위 메뉴의 단축키 지정

    하위메뉴 단축키 예시

     

    • 최종 코드
    package jul31;
    
    import java.awt.event.InputEvent;
    import java.awt.event.KeyEvent;
    
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.KeyStroke;
    
    public class Menu {
    	JFrame jf = new JFrame("메뉴 만들기");
    	JTextArea textArea = new JTextArea("입력하세요", 5, 10);// 가로 5칸, 세로 10칸
    	JScrollPane jScrollPane = new JScrollPane(textArea);// 스크롤바 만들기
    	JMenuBar menuBar = new JMenuBar();// 메뉴바 만들기
    	JMenu fileMenu = new JMenu("파일");
    	JMenu helpMenu = new JMenu("도움말");
    
    	public Menu() {
    		// 메뉴설정
    		fileMenu.add(new JMenuItem("새 파일 열기"));
    		fileMenu.add(new JMenuItem("저장하기"));
    		fileMenu.add(new JMenuItem("기존 파일에 추가"));
    		fileMenu.add(new JMenuItem("종료"));
    
    		helpMenu.add(new JMenuItem("이 프로그램은"));
    		helpMenu.add(new JMenuItem("만든 사람"));
    
    		// 단축키
    
    		// fileMenu의 0번지를 가져옴
    		fileMenu.getItem(0).setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK));
    		
    		// 조립과정
    		menuBar.add(fileMenu);
    		menuBar.add(helpMenu);// 메뉴바 붙임
    		jf.setJMenuBar(menuBar);// 메뉴바를 프레임에 붙임
    		jf.add(jScrollPane, "Center");// 중앙정렬
    		jf.setSize(300, 600);// 가로 세로 크기
    		jf.setVisible(true);// 보여주기
    		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 닫기
    	}
    
    	public static void main(String[] args) {
    		new Menu();
    	}
    }

     

     

    02) JFrame을 상속받아서 Option01을 사용

    • 인스턴스화 하지 않아도 사용가능

     

    • 메세지창 : JOptionPane.showMessageDialog(this, "성공했습니다.");

    메시지창

     

    • 선택창 : JOptionPane.showConfirmDialog(this, "선택하세요.");
      - 선택창에서 날아오는 값 : 0 Yes, 1 No, 2 Cancel

    선택창
    활용 예시

    • input창 : JOptionPane.showInputDialog(this, "이름을 입력하세요");

    Input창

    • 레이아웃 : GridLayout gl = new GridLayout(3, 2, 10, 10); 3줄, 2칸, 간격은 가로 10, 세로 10

     

    • 최종코드
    package jul31;
    
    import java.awt.Color;
    import java.awt.GridLayout;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    public class Final {
    	public static void main(String[] args) {
    		JFrame frame = new JFrame("최종");
    		
    		// 레이아웃
    		GridLayout gl = new GridLayout(3, 2, 10, 10);
    		frame.setLayout(gl);
    		
    		// JLable : 글자만 사용할 수 있는 객체
    		JLabel jl = new JLabel("이름");
    		jl.setText("이름은?");
    		frame.add(jl);// 첫 번째 칸에 들어감
    		
    		// JButton
    		JButton button = new JButton("버튼입니다.");
    		button.setText("버튼");
    		frame.add(button);
    		
    		// 파일 선택
    		JFileChooser jfc = new JFileChooser();
    		frame.add(jfc);
    		
    		// TextField
    		TextField field = new TextField();
    		frame.add(field);
    		
    		// JPanel
    		JPanel jPanel = new JPanel();
    		jPanel.setLayout(new GridLayout(1, 2));
    		JButton jbtn1 = new JButton("버튼1");
    		jPanel.add(jbtn1);
    		jPanel.add(new JButton("버튼2"));
    		frame.add(jPanel);
    		
    		// 기능추가
    		jbtn1.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				jl.setText("버튼을 눌렀습니다.");
    				jl.setForeground(Color.WHITE);// 글자색
    				jl.setBackground(Color.WHITE);// 배경색
    				jbtn1.setForeground(Color.CYAN);// 눌렀을 때 글자색
    			}
    		});
    		
    		frame.setSize(800, 600);
    		frame.setVisible(true);
    	}
    }

     

    실행화면

     

     

    04. 단독 실행할 수 있는 Runnable jar 파일

     

    [ STEP 1 ]

    완료되면 파일이 생성됨

     

     

    [ STEP 2 ]

     

    Launch4j Executable Wrapper

    Download Launch4j Executable Wrapper for free. Cross-platform Java executable wrapper for creating lightweight Windows native EXEs. Provides advanced JRE search, application startup configuration and better user experience.

    sourceforge.net

     

    [ STEP 3 ]

    완료화면

     

     

    05. 비만도 계산하는 프로그램

     

    • GridLayout(5, 1) : 5개 줄의 첫번째 줄

     

    • 데이터 타입 안 맞을 때 맞춰주기 
      ex. String → Double : double height = Double.parseDouble(heightTF.getText());
    package jul31;
    
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    
    class GUI03 extends JFrame {
    	
    	private JTextField nameTF;
    	private JTextField heightTF;
    	private JTextField weightTF;
    	private JButton resultBtn;
    	private JButton resetBtn;
    	private JLabel resultLb;
    	
    	public GUI03() {
    		
    		// 첫 번째 줄
    		setLayout(new GridLayout(5, 1));// 5줄에 1칸
    		JPanel nameP = new JPanel();
    		nameP.setLayout(new GridLayout(1, 2));
    		nameP.add(new JLabel("이 름"));
    		nameTF = new JTextField();
    		nameP.add(nameTF);
    		add(nameP);
    		
    		// 두 번째 줄
    		JPanel heightP = new JPanel();
    		heightP.setLayout(new GridLayout(1, 2));
    		heightP.add(new JLabel("키"));
    		heightTF = new JTextField();
    		heightP.add(heightTF);
    		add(heightP);
    		
    		// 세 번째 줄
    		JPanel weightP = new JPanel();
    		weightP.setLayout(new GridLayout(1, 2));
    		weightP.add(new JLabel("몸무게"));
    		weightTF = new JTextField();
    		weightP.add(weightTF);
    		add(weightP);
    		
    		// 네 번째 줄
    		JPanel buttonP = new JPanel();
    		buttonP.setLayout(new GridLayout(1, 2));
    		resetBtn = new JButton("초기화");
    		buttonP.add(resetBtn);
    		resultBtn = new JButton("결과보기");
    		buttonP.add(resultBtn);
    		add(buttonP);
    		
    		// 다섯 번째 줄
    		resultLb = new JLabel("결과값이 여기에 나타납니다.");
    		add(resultLb);
    		
    		
    		//이벤트 - 초기화, 계산하기
    		// 초기화
    		resetBtn.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				nameTF.setText("");
    				heightTF.setText("");
    				weightTF.setText("");
    			}
    		});// 초기화 버튼 리스너 끝
    		
    		// 결과보기
    		resultBtn.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				String name = nameTF.getText();// 이름에 저장된 값 가져오기
    				double height = Double.parseDouble(heightTF.getText());
    				double weight = Double.parseDouble(weightTF.getText());
    				
    				System.out.println(name);
    				System.out.println(height);
    				System.out.println(weight);
    				
    				// 계산하기 (키 - 100) * 0.9 = 표준몸무게
    				// 비만도 = (몸무게 / 표준몸무게) * 100
    				// 120이상일 때 비만
    				// 120 ~ 80 사이는 정상
    				// 80이하 저체중
    				double result = (weight / ((height - 100) * 0.9)) * 100;
    				
    				if (result > 120) {
    					resultLb.setText(name+ "님, 당신은 비만입니다.");
    				} else if(result < 80) {
    					resultLb.setText(name+ "님, 당신은 저체중입니다.");
    				} else {
    					resultLb.setText(name+ "님, 당신은 표준입니다.");
    				}
    			}
    		});// 결과보기 버튼 리스너 끝
    		
    	}
    	
    }
    
    public class BMD {
    	public static void main(String[] args) {
    		GUI03 gui03 = new GUI03();
    		gui03.setSize(300, 600);
    		gui03.setTitle(":비만도 프로그램:");
    		gui03.setVisible(true);
    		gui03.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    }

    실행화면

     

     

    06. jQuery 문법

     

    01) jQuery 의미

    • HTML의 클라이언트 사이드 조작을 단순화 하도록 설계된 크로스 플랫폼의 자바스크립트 라이브러리
    • 제이쿼리 문법은 코드 보기, 문서 객체 모델 찾기, 애니메이션 만들기, Ajax 개발 등을 쉽게 할 수 있도록 디자인됨
    • 만들어진 문법을 호출해서 사용 가능

     

     

    02) CDN 가져오기

     

    [ STEP 1 ] 홈페이지 접속

     

    Download jQuery | jQuery

    link Downloading jQuery Compressed and uncompressed copies of jQuery files are available. The uncompressed file is best used during development or debugging; the compressed file saves bandwidth and improves performance in production. You can also download

    jquery.com

     

    [ STEP 2 ] 원하는 CDN 선택 후 복사

     

    [ STEP 3 ] </head> 윗 부분에 코드 붙여넣기

    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
    </head>

     

    03) 변수 선언하는 방법

    • var : 전역 변수로 동일한 이름으로 여러번 중복 선언이 가능
    • let : 중복 선언이 불가능하지만 다른 값을 재할당 할 수 있음
    • const : 중복 선언이 불가능하고, 다른 값을 재할당 할 수 없음 (불필요한 변수의 재사용을 방지함)

     

     

    04) 제이쿼리 사용해보기

     

    • 제이쿼리 기본 문법
    // 기본 문법
    $(document).ready(function () {
    	alert('제이쿼리가 구동되었습니다.');
    });
    
    // 축약 문법
    $(function () {
    	alert('제이쿼리가 구동되었습니다.');
    });
    
    $('선택자').명령(명령했을 때 실행할 동작);
    // 선택자에는 html, tag, css id, class 등이 들어갈 수 있음

     

     

    • 활용 1 : 'alert'  알림 띄우기
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8" />
            <title>JQuery</title>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
        </head>
        <body>
            <h1>제이쿼리 사용하기</h1>
            <p>제이쿼리에 대해 이해하고 사용하기</p>
            <p>스스로 웹사이트를 제작하고 활용하기</p>
            <script>
                // 여기는 스크립트 영역입니다.
                $(document).ready(function () {
                    alert('제이쿼리가 구동되었습니다.');
                });
            </script>
        </body>
    </html>

    활용 1 실행화면

     

     

    • 활용 2 : h1을 입력했을 때 'h1을 클릭했습니다.'가 나오게 하기
    <script>
        $(function () {
            $('h1').click(function () {
                alert('h1을 클릭했습니다.');
            });
        });
    </script>

    활용 2 실행화면

     

     

    • 활용 3 : css, text 이용하기
      $('선택자').css('속성','바꿀 속성');
      $('선택자').text('바꿀 텍스트 입력');
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8" />
            <title>JQuery</title>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
            <script>
               
                $(function () {
                    $('h1').click(function () {
                        $('h1').css('color', 'white');
                        $('h1').css('backgroundColor', 'black');
                        $('p').css('border', '1px solid red');
                        $('#p1').text('어서와~');
                        $('.p2').text('제이쿼리는 처음이지?');
                    });
                });
            </script>
        </head>
        
        <body>
            <h1>제이쿼리 사용하기</h1>
            <p id="p1">제이쿼리에 대해 이해하고 사용하기</p>
            <p class="p2">스스로 웹사이트를 제작하고 활용하기</p>
        </body>
    </html>

    활용3 실행화면

     

     

    • 활용 4 : 볼륨버튼 넣기
    <input type="range" min="1" max="100" />
    <button>확인</button>

    활용4 실행화면

     

     

    • 활용 5 : 볼륨 버튼 조절하기
      - let value = $('#volume').val();// val  value로 값을 의미함 
      - $('#volText').text(70); // volText를 70으로 변경
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8" />
            <title>JQuery</title>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
            <script>
                $(function () {
                     $('button').click(function () {
                        let number = $('#volume').val();
                        alert(number);
                    });
                });
            </script>
        </head>
        <body>
            <h1>제이쿼리 사용하기</h1>
            <p id="p1">제이쿼리에 대해 이해하고 사용하기</p>
            <p class="p2">스스로 웹사이트를 제작하고 활용하기</p>
            <input type="range" min="1" max="100" id="volume" />
            <span id="volText"></span>
            <button>확인</button>
        </body>
    </html>

    활용5 실행화면

     

     

     

    반응형

    댓글