20230731 _[41일차]_01. 자바 그래픽스
패턴 - 프랑스어, 되풀이되는 시간이나 물체의 형태를 가르킨다.
물체들의 집합요소로 부르기도 한다.
[자바 그래픽스]
* CLI 커맨드 라인 인터페이스 (CMD했었던게 요기포함되는거)
* GUI 그래픽 유저 인터페이스
* 자바의 그래픽
AWT = 해당 OS의 특징에 따라 화면을 구성합니다. -> 운영체제마다 다른 화면
Button
Swing = 자바에서 화면을 만듭니다. (Look And Feel) -> 모든 운영체제가 같은 화면을 그립니다.
JButton (AWT의 Button과 헷갈리지 않게 Swing은 J를 붙여준다.)
JAVAFX = RIA를 디자인하고 테스트, 디버그, 배포까지 가능한 일련의 그래픽과 미디어의 통합 패키지
* 용어
Container = 자바에서 창 역할을 합니다.
한개 이상의 컨테이너 위에 컨테이너/컴포넌트가 올라갑니다.
컨테이너는 컴포넌트보다 작은 개념
JFrame, window, panel, dialog, applet
(Swing 하위)
Component = 실제로 컨테이너 위에 올려져 화면 구성을 담당합니다.
Button, TextField, TextArea, List
LayoutManager = 컨테이너 위에 컴포넌트들이 올려질 때 자리 배치 방법
FlowLayout, BorderLayout, GridLayout, CardLayout....
상속을 받을 때는 많이 사용하는 요소를 상속받는 것이 좋아요
화면 생성은 프로그램 초기에 이뤄져야 하므로 주로 생성자로 작업합니다.
= 지금까지 배운거 다 나옵니다.
기본 코드 ======================================================================
프레임.add(컴포넌트);
프레임.setSize(int x, int y);
프레임.setVisible(boolean a);
* 프레임이 제일 작은 단위
오늘자 java project_ jul 31생성
GUI01 클래스 생성
Frame, Button 객체생성 (하나의 프레임은 하나의 객체로 생성 _그래서 메모리 많이 잡아먹음)
=> import 필요 (awt로*)
frame에 버튼 추가
frame사이즈지정
frame창을 화면에 보이게 설정 => 실행해보면 버튼창이 뜬다.
버튼창은 안꺼진다. 이클립스에서 실행중지 해야 없어진다.
생성자 하나 만들어서
frame, button 관련 요소들을 안에 넣기
메인 메소드에서 생성자를 호출하면 버튼이 나온다.
근데 생성자를 굳이 gui01 이라는 변수에 넣을 필요가 없으니
new GUI01(); => 요런 형태로 호출해도 된다.
Frame, Button 객체생성도 필드로 빼줌
이제 Swing을 써보자
똑같이 Frame, Button 객체 생성하고
생성자 만들어서 frame에 버튼 넣어주고
메인메소드에서 생성자호출 (얘는 한글이 안깨진다.)
x버튼으로 끌 수 있게 만들어주자 => .setDefaultCloseOperation () 메소드
메뉴바 만들자
Menu 클래스 생성
내부에 객체 (JFrame, JTextArea, JScrollPane) 생성
JTextArea => 이건 summernote 때 봤었던것 같은데 기억이 안난다. 다시 찾아보기
암튼 생성자 만들고 메인메소드에서 호출
new Menu();
메뉴바 객체들 생성
생성한 객체들 조립해줌
항목객체들(파일, 도움말)을 메뉴바에 넣어주고 (JMenu)
메뉴바를 프레임에 넣어줌.
실행해보면 아래처럼 뜬다.
메뉴바에 있는 파일 탭 내부 항목들 추가 (JMenuItem)
파일 누르면 아래처럼 추가한 속성 네개가 뜬다.
도움말 탭 내부항목들도 추가 (JMenuItem)
아래처럼 항목들 추가됨.
추가해준 항목에 단축키 지정해보자
fileMenu에서 0번째 item은 첫번째 항목을 말한다. (0부터 센다.)
요렇게 단축키 넣어주면
파일 눌렀을때
'새파일 열기' 항목 옆에(0번째 항목) 단축키'Ctrl + Alt + N' 표시가 뜬다 (기능은 없음)
[ JSmooth ]
JSmooth - Browse /jsmooth/0.9.9-7 at SourceForge.net
JSmooth - Browse /jsmooth/0.9.9-7 at SourceForge.net
New Relic provides the most powerful cloud-based observability platform built to help companies create more perfect software. Get a live and in-depth view of your network, infrastructure, applications, end-user experience, machine learning models and more.
sourceforge.net
두번째 파일 다운로드
runable 자료 => 단독으로 실행 가능한 자료
바탕화면에 생김
얘는 실행 안되고 아까 다운로드 받은 폴더에서 jsmoothgen 실행
실행해보면 아래처럼 뜬다.
바탕화면에 있던 jar 선택해서 exe로 바꿔주고
맨 아래에 . 은 같은 디렉토리를 의미
클릭해서 바탕화면에 note 생성해주면
아래처럼 생긴다.
위 과정이 안되는 사람들이 있어서 java 버전 바꿔주고 아래도 바꿔줌
다시 zip 파일 받음
Download launch4j-3.50-win32.zip (Launch4j Executable Wrapper) (sourceforge.net)
실행시켜
아이콘(ico 파일로) 넣어주고 왜인지는 모르지만 exe 파일 이름을 note2로 해서 톱니바퀴 눌렀더니
요렇게 아이콘이 적용된다.
[Java] 이클립스 자바프로젝트 실행파일(.exe)로 만들기(launch4j사용) (tistory.com)
[Java] 이클립스 자바프로젝트 실행파일(.exe)로 만들기(launch4j사용)
1. 이클립스에서 실행파일 생성을 위한 Runnable jar파일 생성방법 1-1. [프로젝트 우클릭 - Export - Export ..] 클릭 1-2. 'Runnable JAR file' 선택 후 'Next>'버튼 클릭 1-3. 항목 체크 후 'Finish'버튼 클릭 [Launch conf
zincod.tistory.com
이제 이벤트 적용시켜보자
Option01 클래스 생성
아래처럼 상속시켜주면 new JFrame 할필요가 없다.
부모의 생성자를 사용하겠다는 뜻
.super ()
=> 이 메소드를 사용하기 위해서는 부모클래스에 기본 생성자가 선언되어 있어야 한다.
그대로 가져다가 쓰기 때문에 자식클래스에서 또 인스턴스화 하지 않아도 바로 사용할 수 있다.
JFrame은 Frame 을 상속받아 여러 기능이 추가된거
그래서 위에서 JFrame 상속받아 불러온 방식으로 Frame 객체도 불러올 수 있음
JOptionPane => 사용자 입력창, 확인창, 알림창 만드는 클래스
=> showMessageDialog () , showConfirmDialog (), showInputDialog ()
void 타입 int 타입 string 타입
showMessageDialog (this, "성공했습니다.")
자기자신에게 "성공했습니다." 문구를 띄워라.
실행시켜보면 아래처럼 메세지창 뜬다.
아래처럼 설정해주면
Yes => 0
No => 1
Cancel => 2
콘솔창에 출력
if조건문으로
Yes를 눌렀을때 => " Yes를 눌렀습니다."
No를 눌렀을 때 => " No/취소를 눌렀습니다. "
메세지창이 뜬다.
입력창을 띄워보자
showInputDialog () 메소드
입력창으로 받은 입력값(String)을 name변수에 넣어주고
이걸 선택창으로 띄워보자
입력창에 PYO라고 입력해보면
아래처럼 선택창으로 출력
여러가지 기능들 사용해보자
Final 클래스 생성
JFrame 객체 생성해주고 사이즈지정 & 화면에 보이게 설정
레이아웃 지정 _ GridLayout (행갯수, 열갯수, 행간격, 열간격)
GridLayout
frame 에 지정한 레이아웃 넣어주고
JLabel
frame 에 JLabel 도 넣어주자 (text를 넣어준 jl 객체를 frame 에 넣어줌)
JButton
frame 에 버튼도 넣어주자 (text를 넣어준 버튼을 frame 에 넣어줌)
결과창은 아래처럼
다른 기능들도 추가
JFileChooser
TextField
아래처럼 여러 기능창이 생성된다.
JPanel 을 만들어서 JFrame 안에 넣어보자
보조프레임 메인프레임
JPanel객체생성
jPanel 에 레이아웃 주고(1행 2열) 버튼1 & 버튼2 생성해서 넣어줌
마지막으로 jPanel 을 frame에 넣어줌
(최종코드)
frame 사이즈 설정을 마지막에 해주면
frame 내부 구성요소들이 다 만들어진 후에 최종 frame 크기가 정해지기 때문에
아래처럼 알아서 크기에 맞춰서 들어가져있다.
이렇게 만든 창에 기능을 추가해보자
ActionListener() 인터페이스에
actionPerformed () 메소드를 오버라이드 해서 사용
btn1 을 눌렀을 때 색변경하는 기능 추가.
.setForeground () 메소드 (글자색)
.setBackground () 메소드 => 이건 적용안됨 왜지?
.setForeground () 메소드 (배경색)
버튼1을 누르면 jl (JLabel) 에 넣어준 글자색 & 버튼 글자색이 변경
[ BMD 만들어보자 ]
BMD 클래스 생성 & 변수선언
객체생성 및 조립
메인메소드에서 실행
이렇게 나온다. 기능은 아직 없다.
기능을 만들자 (초기화, 계산하기) 두개 기능
초기화 기능 먼저
계산기능 만들기
.getText() 는 스트링타입이여서
키랑 몸무게를 double 타입 변수에 넣으려면 형변환 필요
이제 비만도 계산
if 조건문으로 계산값에 따른 출력문 설정해줌
이렇게 키랑 몸무게, 계산결과, 비만도가 콘솔창에 출력되고
비만도 프로그램도 잘 된다.
이제 자바 파트 배우기 끝!!!!!!!!!!!!!
스프링을 켜자
Jquery 한다!
이미 선언되어 있어서 jQuery 랑 bootstrap 사용가능함
스페이스바로 해주면 스타일 세개 먹는거
btn2 에서 지정해준 css랑 btn의 css, btn-pri~ 의 css
그러면 아래처럼 버튼 스타일이 바뀐다.
버튼 추가해주고 다른 bootstrap 스타일 가져와보자
아래처럼 다른 스타일 가져와서 지정하면 또 바뀐다.