전체406 이미지 움직이기, 이동범위 제한(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. (Image Class, inner Class 활용), 이미지 파일 불러오는 법 - 1 Inner Class (내부 클래스) 자바의 이너 클래서 혹은 중첩클래스라고 한다. 하나의 클래스로 클래스나 인터페이스 내부에서 선언한다. 코드를 더 읽기 쉽고, 더 오래 유지 하기 위해 논리적인 그룹과 인터페이스들에서 이너클래스를 사용한다. 추가로 이너클래스는 개인적인 데이터 멤버와 메소드를 포함하는 외부 클래스의 모든 멤버들에 접근이 가능하다. package eventPractice; // 1. inner클래스(ImagePanel) 안에서 파일을 불러와 그림을 그려준다 // 2. inner 클래스를 MyFrame1에 멤버 변수로 선언해준다. // 3. 프레임을 셋팅해주고나서 inner 클래스를 new() 해주고나서 add(프레임에 배치) 를 해주면 된다. import java.awt.Graphics;.. 개발일지/자바 2022. 9. 14. GridLayout(배열, ArrayList활용) GridLayout은 컨테이너를 테이블처럼 행과 열로 나누어 컴포넌트를 배치한다. 여기에 추가되는 컴포넌트들은 모두 같은 크기로 나누어지며, 컨테이너의 크기를 변경하면 각 영역이 모두 같은 비율로 커지거나 작아지는 성질을 갖고 있다. 특징 : 화면을 꽉 채우는 특징이 있다. Frame에 Button이 추가될 때 어떤 순서로 GridLayout의 영역에 추가되는지 쉽게 알 수 있을 것이다. 첫번째 행의 열들을 모두 채운 후에 그 아래 행의 열들을 채운다. 이와 같은 방식으로 컴포넌트들이 추가되게 된다. 그리고 , 오른쪽의 그림은 실행 후 Frame의 크기를 늘린 것인데, 늘어난 후에도 각 영역의 Button 들이 모두 같은 크기를 유지하는 것을 알 수 있다.(각 영역은 서로 다른 크기로 지정될 수 있으며,.. 개발일지/자바 2022. 9. 13. 이전 1 ··· 27 28 29 30 31 32 33 34 다음