1. <타이머>
시작버튼, 멈춤버튼, 시간표시용 J라벨, i값 저장할 static int ii를 필드선언.
한 버튼이 선택되면 다른 버튼은 setEnabled(false)처리.
각 버튼에 액션 리스너 익명클래스 생성하여 오버라이딩.
시작을 누르면 스레드를 생성하여 시작해줌.
run에서는 while(true) 해서 멈춤 버튼 누르면 break; 아니면 i값을 추가하거나 감소
원하는 시간 간격만큼 Thread.sleep() 메소드 사용 InterruptedException try catch
i값으로 setText하고 i값은 ii에 저장.
2. <누르고 있을 때 이어서 숫자 세기>
static int ii와 boolean 타입 btnPressed 필드 생성하여 버튼이 눌렸는지 여부를 체크.
MousePressed 인 동안 btnPressed true값 주고 스레드 생성 및 시작.
MouseReleased 면 btnPressed에 false값 주어 run메소드에서 break 되도록 설계.
i의 유효범위는 run메소드, ii의 유효범위는 static. 초기값으로 i에 보관해뒀던 ii를 복제.
run메소드에서 while(true) 하여 i값을 늘리되, 특정 숫자가 되면 i가 0이되도록 설정. ii에 i를 저장.
3. <wait와 notifyAll 활용하여 스레드 바통터치>
필드는 int product 하나. 스레드 2개를 실행함.
Producer 스레드는 produce 메소드를 10번 실행
produce 메소드는 product를 1씩 증가시키면서 Consumer를 notifyAll로 깨움.
product가 7보다 커지면 wait()로 스스로 중단
Consumer 스레드는 sell 메소드를 10번 실행
sell 메소드는 product를 1씩 감소시키면서 Producer를 notifyAll로 깨움.
product가 1보다 작아지면 wait()로 스스로 중단.
두 스레드는 같은 구현대상을 가지고 있기에 wait와 notifyAll로 묶어서 제어할 수 있다.
4. <입출력 스트림>
BufferedInputStream br = new BufferedInputStream(new FileInputStream("파일경로"));
public int read(byte b) : 값이 없으면 -1 return. char 타입이라서 int다. -1이 아닌동안 int를 (char)캐스팅해서 찍음됨
BufferedOutputStream br = new BufferedOutputStream(new FileOutputStream("파일경로"));
public void write(int b) : 파일경로를 갖고 있는 파일 아웃풋 스트림에다 바이트 데이터를 입력해준다.
read, write 메소드 모두 byte[], int 0, int size 를 파라메타로 넣으면 바이트배열의 범위 지정해서 사용 가능
byte로 입출력하는 단점을 보완하는 DataInputStream, DataOutputStream. 파라메타는 FileInput(Output)Stream로 동일
그러나 데이터 타입에 따라 메소드 명이 달라진다. readShort, readLong, readUTF, writeUTF, writeInt, writeDouble 등
BufferedInputStream >> DataInputStream >> PrintInputStream
PritntStream은 아웃풋 기능만 있고, print와 println 메소드가 모든 데이터타입을 오버로드하고 있어서 편리함.
5. <메모장 만들기>
JMenuItem > JMenu > JMenuBar
JMenuItem : setAccelerator(KeyStroke.getKeyStroke('N', Event.ALT_MASK));
JMenu : setMnemonic(KeyEvent.VK_W);
★저장기능
JFileChooser chooser = new JFileChooser();
int sel = -1;
sel = chooser.showSaveDialog();
if (sel == chooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
bw.write(JTextField.getText());
bw.close();
}
열기는 셋 텍스트 "" 해준 다음 readLine을 String line에 담아서 append 해주다가 -1이 되면 브레이크 해라 하면 됨.
메모장 소스코드
https://github.com/HJ-Rich/Bit159/blob/9dd9bbb2d9de1bdeed8ea54fd8ef1c1b40d248b1/notepad/MenuPane.java
https://github.com/HJ-Rich/Bit159/blob/9dd9bbb2d9de1bdeed8ea54fd8ef1c1b40d248b1/notepad/TryNotepad.java
'Java & Spring' 카테고리의 다른 글
2020.05.07 (목) 학습 : 그림판 더블버퍼링, jSmooth (0) | 2020.05.07 |
---|---|
2020.05.06 (수) 학습 : 네트워크, 채팅, 서버 클라이언트 (0) | 2020.05.07 |
2020.05.04 (월) 학습 : 컴파일과 실행 동시에, Socket, 자바프로젝트 시작 (캐치마인드) (0) | 2020.05.04 |
2020.05.01 (금) 학습 : 네트워크, EOFException, Interface (0) | 2020.05.01 |
2020.04.29 (수) 학습 : 직렬화 Serializable, Graphics2D, GUI (0) | 2020.04.29 |