개발일지349 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. BorderLayout(배열, ArrayList활용) BorderLayout은 컨테이너를 North, South, East, West, Center 모두 5개의 영역으로 나누고, 각 영역에 하나의 컴포넌트만을 배치할 수 있도록 한다. 그래서 한 영역에 여러 개의 컴포넌트를 배치하면, 마지막에 추가한 컴포넌트만 보이게 된다. 한 영역에 하나 이상의 컴포넌트르 넣기 위해 Panel을 이용해야 한다. Panel에 원하는 컴포넌트들을 넣은 다음, BorderLayout의 한 영역에 다시 이 Panel을 넣으면 된다. BorderLayout은 컨테이너인 Window, Frame, Dialog의 기본 Layout이다. 즉, 이 컨테이너들의 레이아웃 매너저는 따로 설정하지 않아도 생성되어질 때부터 이미 BorderLayout으로 설정되어 있다는 것이다. 예제를 실행시킨.. 개발일지/자바 2022. 9. 13. FlowLayout(ArrayList 활용) ArrayList를 이용하면 배열과 다르게 몇번을 반복을돌려 값을 꺼낼지 상수로 선언을 해줘야하는 차이점이 있다. 만약 arrayList.size()을 이용하여 크기를 정하게되면 확실하게 몇번을 버튼을 new해줘야할지 모른다. 그래서 반복의 횟수는 정해줘야한다. package ch01; import java.awt.FlowLayout; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JFrame; public class FlowLayoutEx4 extends JFrame { // 배열로 만들어서 코드를 수정 // 생성시 for문 활용 // 정 가운데 배치 (수직) // 배열, ArrayList(멤버변수 선언과 동시에 초.. 개발일지/자바 2022. 9. 13. FlowLayout (배열 활용) 버튼을 연속적으로 만들때 배열을 활용하면 코드를 간소화 시킬수있다. package ch01; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class FlowLayoutEx3 extends JFrame { // 배열로 만들어서 코드를 수정 // 생성시 for문 활용 // 정 가운데 배치 (수직) // 배열, ArrayList(멤버변수 선언과 동시에 초기화 private JButton[] buttons = new JButton[5]; private FlowLayout flowLayout; public FlowLayoutEx3() { initData(); setInitLayout(); } // .. 개발일지/자바 2022. 9. 13. FlowLayout활용 JFrame은 java swing 클래스의 일부이며 구현되는 하나의 창이다. Swing은 자바에서 그래픽 사용자 인터페이스를 구현하기 위하여 제공되는 클래스이다. 또한 버튼, 창, 표, 트리 등의 컴포넌트들을 이용할 수 있게 해주는 클래스 이다. 사용할 컴포넌트를 멤버 변수에 선언을 해준다. 그리고나서 메소드를 두개로 나누어 보기 쉽게 분리를 해준다. FlowLayout은 컴포넌트들이 추가되는 순서에 따라 왼쪽에서 오른쪽으로 이어져나가며, 공간이 부족하면, 아랫줄에 추가된다. 이것은 마치 글자를 입력하면 왼쪽에서 오른쪽으로 진행해 나가며, 한 라인의 끝에 다다르면, 다음 라인의 처음부터 글자가 입력되는 워드프로세서에서의 문자입력과 매우 유사하다. 또한 컴포넌트의 정렬에 있어서도 워드프로세서에서와 같이 왼.. 개발일지/자바 2022. 9. 13. 이전 1 ··· 24 25 26 27 28 29 30 다음