개발일지/자바74 Thread란? (쓰레드 생성 및 활용법 1) porcess : 프로그램이 실행이 되면 OS로부터 메모리를 할당 받아 프로세스 상태가 됨 thread : 하나의 프로세스에는 하나 이상에 thread를 가지게 되고, 실제 작업을 수행하는 단위는 thread이다. multi threading(멀티 쓰레딩) 이란 여러 쓰레드가 동시에 수행되는 프로그래밍, 여러 작업이 동시에 실행되는 효과를 만들어 낼 수 있다. thread는 각각 자신만에 변수, 메서드 즉 작업 공간에 가진다. 즉 자기자신에 context를 가진다. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!중요!!!!!!!!!!!!!!!!!!!!!!!!!!! 멀티 쓰래딩프로그램시 주의점 각 thread 사이에서 공유하는 자원이 있을 수 있다. 여러 쓰레드가 자원을 공유하여 작업이 수행되는 경우.. 개발일지/자바 2022. 9. 19. 이미지 움직이기, 이동범위 제한(KeyAdapter, Jpanel 활용) - 2 package blogpractice; import java.awt.Graphics; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; public class KeyEventListener2 extends JFrame { boolean flag = true; final int FRAME_WIDTH = 500; // 프레임 가로 사이즈 fi.. 개발일지/자바 2022. 9. 17. 이미지 움직이기, 이동범위 제한(keyListener, Jpanel 활용) - 1 package blogpractice; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; public class KeyBordEventListener1 extends JFrame implements KeyListener{ boolean flag = true; final int FRAME_WI.. 개발일지/자바 2022. 9. 17. 마우스 리스너 (어댑터 활용) MouseAdapter 사용법 * 1. 클래스 내에서만 사용하기때문 private를 사용하여 내부클래스를 만들어준다. * 2. MouseAdapter라는 추상클래스를 상속받아준다 (추상클래스, 인터페이스는 객체 생성(new) 를 할수가없다) * 3. 내부클래스에 추상클래스를 상속을 받아준다(내부클래스는 new 가능) 이제는 new해서 MouseAdapter(추상클래스 new안됨)에 접근이 가능하다 * 4. MouseAdapter는 MouseListener인터페이스를 구현하고있다. 그러기때문에 MouseListener까지 접근가능 * 5. 일반 내부클래스인 MyMouseListener를 new를 해줘서 오버라이드를 해준다. * 6. 그럼 MouseListener인터페이스에서 원하는 기능만 오버라이드를 해줄.. 개발일지/자바 2022. 9. 17. 마우스 리스너 (MouseListener) - 2 (익명, 구현 클래스) package blogpractice; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JLabel; public class MouseEventListener2 extends JFrame { JLabel label; final int LABEL_WIDTH = 100; // 라벨의 가로 크기 final int LABEL_HEIGHT = 100; // 라벨의 세로 크기 int xPosition = 100; int yPosition = 100; public MouseEventListener2() { initData(); setInitLayout(); .. 개발일지/자바 2022. 9. 17. 마우스 리스너 (MouseListener) - 1 package blogpractice; import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JLabel; // 마우스 리스너 : public class MouseEventListener1 extends JFrame implements MouseListener{ JLabel jLabel; final int LABEL_WIDTH = 100; // 라벨의 가로 크기 final int LABEL_HEIGHT = 100; // 라벨의 세로 크기 int xPosition = 100; int yPosition = .. 개발일지/자바 2022. 9. 17. Button 리스너 등록 색 변경하기 - 2 (익명, 구현클래스) 이번에는 ActionListener을 구현(implement)을 안하고 ActionListener인터페이스를 구현클래스(익명클래스)로 만들어서 ActionListener 등록하는 방법이다. 리스너를 사용하는 방법이 2가지가 있는것이다 프로그램의 실행 결과는 똑같다 package blogpractice; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing... 개발일지/자바 2022. 9. 17. Button 리스너 등록 색 변경하기 - 1 n개의 버튼이 있으면 각각의 버튼 구분하는 방법 1. ( == ) 사용하는 방법 2. 다운캐스팅을해서 .equals를 사용하는 방법 ( == ) 사용법 equals 사용법 package blogpractice; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class ColorChangeListener extends JFr.. 개발일지/자바 2022. 9. 17. 각각의 버튼의 콜백메소드 실행 결과 메인 package blogpractice; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; class MyFrame extends JFrame implements ActionListener { JButton button1; JButton button2; JPanel jPanel; public MyFrame() { initData(); setInitLayout(); addEventListener(); } private .. 개발일지/자바 2022. 9. 17. 콜백 매소드 콜백 메소드는 특정 조건이 있고, 이 조건을 만족할 때마다 기능을 수행한다고 하자. 콜백을 사용하면 이벤트가 발생하여 특정 조건을 만족시켰을 경우, 콜백 함수를 호출하여 바로 기능을 수행할 수 있다. 콜백 함수는 바로바로 사용할 수 있으며, 조건이 맞는지 틀린지 확인하는 과정을 거치지 않아도 되기에 효율적이다. 만약, 콜백을 사용하지 않고 계속 객체에 접근하는 방식으로 코드를 작성하였다고 하자. 해당 객체에 어떠한 오류가 발생할 경우 그 객체부터 접근하는 과정까지 모두 수정이 필요할 수 있다. 콜백이라는 개념을 사용하면 객체의 주소만 연결시켜주면 바로 기능을 수행할 수 있다. package blogpractice; import java.awt.FlowLayout; import java.awt.event... 개발일지/자바 2022. 9. 16. Paint(좌표값을 이용한 그림 그리는 방법) package eventPractice; import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; // 외부 클래스 : 클래스안에 또다른 클래스를 포함하고 있으면 외부 클래스라고 한다. class OutClass extends JFrame { InnerClass innerClass; // 내부클래스 멤버변수 선언 // 이번에는 일반클래스가 아닌 외부 클래스에서 코드가 진행된다. public OutClass() { initData(); setInitLayout(); } private void initData() { setTitle("paint 사용법"); // 프레임 타이틀 setSize(800, 800); // 프레임 .. 개발일지/자바 2022. 9. 14. (Image Class, inner Class 활용), 이미지 파일 불러오는 법 - 2 package eventPractice; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; public class MyBufferedImage extends JFrame{ private BufferedImage backgroundImage; // BufferedImage형태의 배경이미지 멤버변수 private BufferedImage player; // BufferedImage형태의 케릭터 멤버변수 priva.. 개발일지/자바 2022. 9. 14. 이전 1 2 3 4 5 6 7 다음