JAVA - 12
카테고리: java
BallGame.java
MyPanel
클래스는 JPanel
을 상속받아서 커스텀 패널을 정의합니다. 이 패널은 빨간색 원을 표시하고, 마우스 클릭 이벤트를 처리하여 원의 위치를 변경합니다. 원은 패널의 배경색이 흰색인 곳에서 마우스를 클릭한 위치로 이동합니다.
MyPanel
의 생성자에서는 배경색을 흰색으로 설정하고, MouseListener
를 추가하여 마우스 클릭 이벤트를 감지합니다. 마우스 클릭이 발생하면 현재 클릭한 좌표를 가져와서 원의 위치를 업데이트하고, repaint()
를 호출하여 패널을 다시 그립니다.
MyPanel
의 paintComponent
메서드는 Graphics
객체를 사용하여 현재 위치에 빨간색 원을 그립니다. 원의 위치는 img_X
와 img_Y
변수에 의해 지정되며, 크기는 50x50입니다.
BallGame
클래스는 JFrame
을 상속받아 애플리케이션 창을 생성합니다. 생성자에서는 창의 제목을 설정하고 크기를 지정하고, 종료 버튼을 클릭할 때 프로그램이 종료되도록 설정합니다. 그리고 MyPanel
객체를 생성하여 프레임에 추가합니다. 이렇게 함으로써 MyPanel
이 BallGame
프레임의 내부에 추가되고, 패널의 paintComponent
메서드를 통해 그래픽이 그려집니다.
실행 화면 :

CarGame.java
MyPanel3
클래스는 JPanel
을 상속하여 커스텀 패널을 정의합니다. 이 패널은 자동차 이미지를 표시하고, 마우스 클릭 이벤트를 처리하여 자동차 이미지의 위치를 변경합니다.
MyPanel3
의 생성자에서는 배경색을 흰색으로 설정하고, 이미지를 로드하여 carImage
에 저장합니다. 이미지는 “C://temp//car1.gif” 경로에서 로드되며, 예외가 발생할 경우 오류 메시지를 출력합니다.
마우스 클릭 이벤트를 처리하기 위해 MouseListener
를 추가합니다. 마우스 클릭이 발생하면 현재 클릭한 좌표를 가져와서 img_X
와 img_Y
변수를 업데이트하고, repaint()
를 호출하여 패널을 다시 그립니다.
MyPanel3
의 paintComponent
메서드는 Graphics
객체를 사용하여 자동차 이미지를 현재 위치에 그립니다. 이미지는 carImage
변수에 저장된 이미지이며, 좌표는 img_X
와 img_Y
로 지정됩니다.
CarGame
클래스는 JFrame
을 상속받아 애플리케이션 창을 생성합니다. 생성자에서는 창의 제목을 설정하고 크기를 지정하고, 종료 버튼을 클릭할 때 프로그램이 종료되도록 설정합니다. 그리고 MyPanel3
객체를 생성하여 프레임에 추가합니다. 이렇게 함으로써 MyPanel3
이 CarGame
프레임의 내부에 추가되고, 패널의 paintComponent
메서드를 통해 그래픽이 그려집니다.
실행화면 :

CarGame_Keyboard.java
MyPanel2
클래스는 JPanel
을 상속받아 커스텀 패널을 정의합니다. 이 패널은 자동차 이미지를 표시하고, 키보드 이벤트를 처리하여 자동차 이미지의 위치를 변경합니다.
MyPanel2
의 생성자에서는 ImageIO
를 사용하여 이미지 파일 “C:/temp/car1.gif”을 로드하고 carImage
에 저장합니다. 이미지 로드에 실패할 경우 오류 메시지를 출력합니다.
KeyListener
인터페이스를 구현하여 키보드 이벤트를 처리하기 위해 addKeyListener(this)
를 호출하고, 포커스를 설정하기 위해 setFocusable(true)
를 호출합니다.
paintComponent
메서드는 Graphics
객체를 사용하여 자동차 이미지를 현재 위치에 그립니다. 이미지는 carImage
변수에 저장된 이미지이며, 좌표는 carX
와 carY
로 지정됩니다.
keyPressed
메서드에서는 키보드 이벤트의 키 코드를 확인하여 상하좌우 방향키에 따라 carX
와 carY
를 조정하고, repaint()
를 호출하여 패널을 다시 그립니다.
keyTyped
와 keyReleased
메서드는 사용되지 않습니다.
CarGame_Keyboard
클래스는 JFrame
을 생성하여 애플리케이션 창을 생성합니다. 프레임의 제목을 설정하고, 종료 버튼을 클릭할 때 프로그램이 종료되도록 설정합니다.
MyPanel2
객체를 생성하여 프레임의 콘텐트 팬으로 추가하고, 프레임의 크기를 설정합니다. 마지막으로 panel.requestFocusInWindow()
를 호출하여 패널에 포커스를 설정합니다.
FlyingText.java
FlyingText
클래스는 JFrame
을 상속받아 프레임을 생성하고, KeyListener
를 구현하여 키 이벤트를 처리합니다.
프레임의 생성자에서는 프레임의 제목을 설정하고, 컨텐트 팬의 레이아웃 매니저를 삭제합니다. 이후 JLabel
인 la
를 생성하여 프레임에 추가하고, 프레임의 크기와 가시성을 설정합니다. 마지막으로 컨테이너에 포커스를 설정합니다.
MyKeyListener
클래스는 KeyAdapter
를 상속받아 키 이벤트를 처리하는 내부 클래스입니다. 클래스 내부에는 upPressed
, downPressed
, leftPressed
, rightPressed
라는 네 개의 불리언 변수가 있습니다.
keyPressed
메서드는 눌려진 키의 키 코드를 확인하고, 해당하는 상하좌우 키 상태를 업데이트합니다. 대각선 이동인 경우에는 la
의 위치를 변경합니다. 그렇지 않은 경우에는 키 코드에 따라 la
의 위치를 이동시킵니다.
keyReleased
메서드는 떼어진 키의 키 코드를 확인하고, 해당하는 상하좌우 키 상태를 업데이트합니다.
main
메서드에서는 FlyingText
객체를 생성하여 프로그램을 실행합니다.
이 코드는 키보드의 상하좌우 키를 사용하여 텍스트를 움직이는 간단한 예시입니다. 키를 누르면 텍스트가 이동하며, 키를 떼면 이동이 멈춥니다. 대각선 방향으로도 이동할 수 있습니다.
LayoutManager_FlowLayout.java
FlowLayout
를 사용하여 컴포넌트를 왼쪽에서 오른쪽으로 배치하는 예시입니다.
LayoutManager_FlowLayout
클래스는 JFrame
을 상속받아 프레임을 생성합니다. 생성자에서는 프레임의 제목과 닫기 동작을 설정합니다.
getContentPane
메서드를 사용하여 JFrame
의 컨텐트 팬을 가져옵니다.
Container
의 setLayout
메서드를 사용하여 가져온 컨텐트 팬에 FlowLayout
을 설정합니다. 이를 통해 컴포넌트들이 왼쪽에서 오른쪽으로 배치됩니다.
JButton
객체를 생성하고, addActionListener
메서드를 사용하여 이벤트 리스너를 등록합니다. 이 예시에서는 MyActionListener
클래스의 인스턴스를 이벤트 리스너로 등록합니다.
버튼 객체를 컨테이너에 추가합니다.
프레임의 크기를 설정하고 가시성을 설정하여 프레임을 표시합니다.
main
메서드에서는 이벤트 디스패치 스레드를 사용하여 LayoutManager_FlowLayout
객체를 생성하여 프로그램을 실행합니다.
MyActionListener
클래스는 ActionListener
인터페이스를 구현한 내부 클래스입니다. actionPerformed
메서드는 버튼이 클릭되었을 때 호출됩니다. 이 예시에서는 버튼의 텍스트를 변경하고 콘솔에 메시지를 출력합니다.
이 코드는 FlowLayout
를 사용하여 컴포넌트를 왼쪽에서 오른쪽으로 배치하는 예시입니다. 버튼이 클릭되면 텍스트가 변경되는 동작을 구현하였습니다.
실행화면 :

GridLayout_ex.java
GridLayout
을 사용하여 그리드 형태의 레이아웃을 구성하는 예시입니다.
GridLayout_ex
클래스는 JFrame
을 상속받아 프레임을 생성합니다. 생성자에서는 프레임의 제목과 닫기 동작을 설정합니다.
그리드 레이아웃 객체 GridLayout
을 생성하고, 행과 열의 개수를 지정합니다. 이 예시에서는 4행 2열의 그리드를 생성합니다.
GridLayout
객체의 setVgap
메서드를 사용하여 각 행 사이의 간격을 5픽셀로 설정합니다.
getContentPane
메서드를 사용하여 JFrame
의 컨텐트 팬을 가져옵니다.
Container
의 setLayout
메서드를 사용하여 가져온 컨텐트 팬에 GridLayout
을 설정합니다.
JLabel
과 JTextField
컴포넌트를 생성하여 컨테이너에 추가합니다. JLabel
은 “이름”, “학번”, “학과”, “과목”의 텍스트를 가지고 있고, JTextField
은 빈 텍스트 필드를 생성합니다.
프레임의 크기를 설정하고 가시성을 설정하여 프레임을 표시합니다.
main
메서드에서는 GridLayout_ex
객체를 생성하여 프로그램을 실행합니다.
실행화면 :

댓글 남기기