import java.util.*;
class StringTokenizerEx {
public static void main(String[] args) {
String line = "이/또한@흘러#가리라!";
StringTokenizer st = new StringTokenizer(line,"/@#");
//System.out.println(st.countTokens()); // 문자열이 4조각으로 잘릴걸 알고 있음, 구분자 기준으로 잘라냄
String[] tokens = new String[st.countTokens()];
int idx = 0;
while(st.hasMoreTokens()){
String token = st.nextToken();
tokens[idx] = token;
idx++;
}
System.out.println(Arrays.toString(tokens));
//while(st.hasMoreTokens()) {
//String token = st.nextToken();
//System.out.println(token)
}
}
countTokens()
StringTokenizer 클래스의 안에서 제공하는 기본 메서드
정확하게 말하면 StringTokenizer의 모든 갯수가 아닌 nextToken 메서드를 호출 할 수 있는 횟수를 계산합니다
`StringTokenizer' class
매개 변수 : 매개 변수는 사용하지 않음
return 값 : StringTokenizer의 남아있는 토큰 갯수를 반환!
import java.text.*;
import java.util.*;
class TimeFormatting {
public static void main(String[] args) {
Date d = new Date(); // 시간정보를 나타냄
d.setTime(111111); // 원하는 특정한 시간대를 설정할 수 있음
System.out.println(d.getTime()); // 꺼내는 것
// 2022.12.05 오전 09:23:55
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd aa hh:mm:ss"); // 시간 형식을 넣어줘야 함
String strDate = sdf.format(d);
System.out.println(strDate);
}
}
import java.text.*;
import java.util.*;
class TimeFormatting {
public static void main(String[] args) {
Date d = new Date(); // 시간정보를 나타냄
d.setTime(111111); // 원하는 특정한 시간대를 설정할 수 있음
System.out.println(d.getTime()); // 꺼내는 것
// 2022.12.05 오전 09:23:55
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd aa hh:mm:ss"); // 시간 형식을 넣어줘야 함
String strDate = sdf.format(d);
System.out.println(strDate);
String myDate = "2002.10.05 오후 09:30:15";
Date someday = sdf.parse(myDate); // date객체
System.out.println(someday.getTime());
}
}
예외처리 없애줘야 함
import java.text.*;
import java.util.*;
class TimeFormatting {
public static void main(String[] args) {
Date d = new Date(); // 시간정보를 나타냄
d.setTime(111111); // 원하는 특정한 시간대를 설정할 수 있음
System.out.println(d.getTime()); // 꺼내는 것
// 2022.12.05 오전 09:23:55
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd aa hh:mm:ss"); // 시간 형식을 넣어줘야 함
String strDate = sdf.format(d);
System.out.println(strDate);
try {
String myDate = "2002.10.05 오후 09:30:15";
Date someday = sdf.parse(myDate); // date객체
System.out.println(someday.getTime());
} catch(ParseException e) {
e.printStackTrace();
}
}
}
getTime()
: 저장된 시간을 반환 (ms 단위 숫자)
setTime(long date)
: 주어진 시간으로 저장된 값을 변경(ms 단위 숫자), 예외처리 없애준 결과 이렇게 된다!
이클립스 단축키 사용법
ctrl + s
: save(compile)
ctrl + f11
=> run
ctrl + m
=> 창 최대화, 복원
ctrl + n
=> 새로 만들기
ctrl + f6
=> 에디터 변경
ctrl + d
=> 즐 삭제
alt shift s => r
getter/setter
alt + shift + s => s
toString
alt + shift + s => c
기본 생성자
alt + shift + s => o
생성자(파라미터)
ctrl + d
=> 줄 삭제
ctrl + shift + f
=> 자동 줄 맞춤
ctrl + shift + o
=> 자동 임포트 import
main + ctrl + space
: main 메서드
alt + shift + t + n
: 이름 한번에 변경
GUI
- AWT : 장점- 쉽다 / 단점- 표현의 한계, o/s 종속
- Swing (나중에 추가됨) 장점- 표현의 한계가 사라짐, o/s 독립적
단점- 어려움 `javax.swing`
Swing을 사용하면 객체지향의 개념을 눈으로 볼 수 있다!
Android 정복가능
이후에 학습내용의 결과물들을 위해 수행
MVC(model view) 구조 맛보기
이벤트 처리 구조방식
눈에 보이는 화면 구성요소들을 컴포넌트
라 표현
상속 is-a 관계이니까 Swing을 쓰면 AWT도 사용가능
package kr.ac.green;
import javax.swing.JFrame;
public class FrameEx1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame f = new JFrame();
f.setLocation(300,200); // 픽셀 단위 (점 하나가 1픽셀), 비율에 따라 화면 달라질 수 있음, 왼쪽 귀퉁이부터 300, 밑으로 200
/*
* JFrame.EXIT_ON_CLOSE : 프로그램 종료
* JFrame.DISPOSE_ON_CLOSE: 해당 창만 종료
* JFrame.HIDE_ON_CLOSE: 창의 가시성을 제거(default)
* JFrame.DO_NOTHING_IN_CLOSE: 아무것도 하지마라
*/
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // (기본 닫기 기능) 안보이는 창 on close 닫기 누르면 뭐할래? exit 해라
f.setVisible(true); // 눈에 안보였는데 true 넣어서 보이게 됨
}
}
사이즈를 키워보자!
package kr.ac.green;
import javax.swing.JFrame;
public class FrameEx1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame f = new JFrame();
f.setSize(400,300);
f.setLocation(300,200);
/*
* JFrame.EXIT_ON_CLOSE : 프로그램 종료
* JFrame.DISPOSE_ON_CLOSE: 해당 창만 종료
* JFrame.HIDE_ON_CLOSE: 창의 가시성을 제거(default)
* JFrame.DO_NOTHING_IN_CLOSE: 아무것도 하지마라
*/
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // (기본 닫기 기능) 안보이는 창 on close 닫기 누르면 뭐할래? exit 해라
f.setVisible(true); // 눈에 안보였는데 true 넣어서 보이게 됨
}
}
컴파일하면!
package kr.ac.green;
import javax.swing.JFrame;
public class FrameEx1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame f = new JFrame("쩡인이네 강아지는 쭌삼이"); // 파라미터로 넣어도 되고 따로 생성해도 됨!
f.setSize(400,300);
f.setLocation(300,200);
// f.setTitle("쩡인이네 강아지는 쭌삼이");
/*
* JFrame.EXIT_ON_CLOSE : 프로그램 종료
* JFrame.DISPOSE_ON_CLOSE: 해당 창만 종료
* JFrame.HIDE_ON_CLOSE: 창의 가시성을 제거(default)
* JFrame.DO_NOTHING_IN_CLOSE: 아무것도 하지마라
*/
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // (기본 닫기 기능) 안보이는 창 on close 닫기 누르면 뭐할래? exit 해라
f.setVisible(true); // 눈에 안보였는데 true 넣어서 보이게 됨
}
}
set.Background
는 제일 뒤에 Frame
의 색이 변경된다.
Glass Pane
은 투명
Content Pane
(클래스 이름이 아니라 얘네들 이름) 우리가 실제로 보는 화면
사용하려면 f.getContentPane().setBackground(Color.RED);
원하는 색 넣고 싶을땐 네이버에서 색상표 검색해서
#
빼고 FFD9EC 원하는 컬러값 복사해서 붙여넣기// 0 ~ F Color background = new Color(0xFFD9EC); //0x는 16진수 f.getContentPane().setBackground(background);
package kr.ac.green;
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.JFrame;
public class FrameEx2 {
public static void main(String[] args) {
JFrame f = new JFrame();
Dimension size = new Dimension(500, 400);
f.setSize(size);
Point location = new Point(200, 300);
f.setLocation(location);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true); // 제일 끝에 적어줘야 함
}
}