Study

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

PEAZH 2023. 7. 31. 08:28
반응형

 

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 실행화면

 

 

 

반응형