728x90
JPanel의 paintComponent()
package swing.graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
//-----------------------------------------------------------------------------------------------------------
// public class paintPanelExam extends JFrame
//-----------------------------------------------------------------------------------------------------------
public class paintPanelExam extends JFrame {
//-----------------------------------------------------------------------------------------------------------
// 생성자
//-----------------------------------------------------------------------------------------------------------
paintPanelExam() {
setTitle("JPanel의 paintComponent() 연습");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setSize(800, 600);
setVisible(true);
} // End - 생성자
//-----------------------------------------------------------------------------------------------------------
// JPanel을 상속받아 새 Panel을 구현한다.
//-----------------------------------------------------------------------------------------------------------
class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g); // panel 내에 이전에 그려진 잔상을 지우기 위해서 호출한다.
g.setColor(Color.BLUE); // 색을 파란색으로 설정한다.
g.drawRect(10, 10, 100, 100);
g.drawRect(100, 100, 200, 200);
g.setColor(Color.MAGENTA);
g.drawRect(180, 180, 400, 360);
g.setColor(Color.GREEN);
g.drawRect(110, 110, 300, 250);
}
} // End - class MyPanel extends JPanel
//-----------------------------------------------------------------------------------------------------------
// public static void main(String[] args)
//-----------------------------------------------------------------------------------------------------------
public static void main(String[] args) {
new paintPanelExam();
} // End - public static void main(String[] args)
} // End - public class paintPanelExam extends JFrame
문자열의 Color와 Font 사용하기
package swing.graphics;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
//-----------------------------------------------------------------------------------------------------------
// public class ColorFontExam extends JFrame
//-----------------------------------------------------------------------------------------------------------
public class ColorFontExam extends JFrame {
//-----------------------------------------------------------------------------------------------------------
// 생성자
//-----------------------------------------------------------------------------------------------------------
ColorFontExam() {
setTitle("문자열의 Color와 Font 사용 연습하기");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setSize(800, 600);
setVisible(true);
} // End - 생성자
//-----------------------------------------------------------------------------------------------------------
// class MyPanel extends JPanel
//-----------------------------------------------------------------------------------------------------------
class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE); // 파란색으로 설정한다.
g.drawString("자바가 너무 재미있어요", 30, 40);
g.setColor(new Color(0, 255, 0)); // 초록색으로 설정한다.
g.setFont(new Font("Gulim", Font.ITALIC, 30));
g.drawString("얼마나 재미있어요?", 30, 80);
g.setColor(new Color(0xff00ff));
for(int i = 1; i <= 7; i++) {
g.setFont(new Font("상주곶감체", Font.ITALIC+Font.BOLD, i * 10));
g.drawString("엄청 재미있어요", 30, 90 + i * 60);
}
}
} // End - class MyPanel extends JPanel
//-----------------------------------------------------------------------------------------------------------
// public static void main(String[] args)
//-----------------------------------------------------------------------------------------------------------
public static void main(String[] args) {
new ColorFontExam();
} // End - public static void main(String[] args)
} // End - public class ColorFontExam extends JFrame
도형 그리기
package swing.graphics;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
//-----------------------------------------------------------------------------------------------------------
// public class GraphicsDrawShapeExam
//-----------------------------------------------------------------------------------------------------------
public class GraphicsDrawShapeExam extends JFrame {
//-----------------------------------------------------------------------------------------------------------
// 생성자
//-----------------------------------------------------------------------------------------------------------
GraphicsDrawShapeExam() {
setTitle("도형 그리기 연습");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setSize(800, 600);
setVisible(true);
} // End - 생성자
//-----------------------------------------------------------------------------------------------------------
// class MyPanel extends JPanel
//-----------------------------------------------------------------------------------------------------------
class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.PINK); // 직선
g.drawLine(20, 20, 700, 500); // (시작x, 시작y, 종료x, 종료y)
g.setColor(Color.GREEN); // 원
g.drawOval(50, 60, 100, 100); // (x, y, width, height)
g.setColor(Color.BLUE); // 사각형
g.drawRect(50, 200, 200, 100); // (x, y, width, height)
g.setColor(Color.RED); // 모서리가 둥그런 사각형
g.drawRoundRect(50, 320, 300, 200, 40, 60); // (x, y, width, height, roundx, roundy)
g.setColor(Color.MAGENTA); // 원호
g.drawArc(400, 50, 80, 80, 90, 270); // (x, y, width, height, 시작각도, 각도만큼)
g.setColor(Color.YELLOW); // 다각형
int[] x = {300, 400, 80, 120};
int[] y = {300, 120, 300, 140};
g.drawPolygon(x, y, 3);
}
} // End - class MyPanel extends JPanel
//-----------------------------------------------------------------------------------------------------------
// public static void main(String[] args
//-----------------------------------------------------------------------------------------------------------
public static void main(String[] args) {
new GraphicsDrawShapeExam();
} // End - public static void main(String[] args)
} // End - public class GraphicsDrawShapeExam
도형 칠하기
package swing.graphics;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
//-----------------------------------------------------------------------------------------------------------
// public class GraphicsDrawFillShapeExam extends JFrame
//-----------------------------------------------------------------------------------------------------------
public class GraphicsDrawFillShapeExam extends JFrame {
//-----------------------------------------------------------------------------------------------------------
// 생성자
//-----------------------------------------------------------------------------------------------------------
GraphicsDrawFillShapeExam() {
setTitle("도형 칠하기 연습");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setSize(800, 600);
setVisible(true);
} // End - 생성자
//-----------------------------------------------------------------------------------------------------------
// class MyPanel extends JPanel
//-----------------------------------------------------------------------------------------------------------
class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.YELLOW);
g.fillRect(10, 10, 50, 50);
g.setColor(Color.ORANGE);
g.fillOval(10, 70, 50, 50);
g.setColor(Color.PINK);
g.fillRoundRect(10, 130, 50, 50, 20, 20);
g.setColor(Color.RED);
g.fillArc(10, 190, 50, 50, 0, 270);
g.setColor(Color.MAGENTA);
int[] x = {30, 10, 30, 60};
int[] y = {250, 275, 300, 275};
g.fillPolygon(x, y, 4);
}
} // End - class MyPanel extends JPanel
//-----------------------------------------------------------------------------------------------------------
// public static void main(String[] args)
//-----------------------------------------------------------------------------------------------------------
public static void main(String[] args) {
new GraphicsDrawFillShapeExam();
} // End - public static void main(String[] args)
} // End - public class GraphicsDrawFillShapeExam extends JFrame
마우스 드래깅으로 타원 그리기
package swing.graphics;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
//-----------------------------------------------------------------------------------------------------------
// public class GraphicsDrawOvalMouseExam
//-----------------------------------------------------------------------------------------------------------
public class GraphicsDrawOvalMouseExam extends JFrame {
//-----------------------------------------------------------------------------------------------------------
// public static void main(String[] args)
//-----------------------------------------------------------------------------------------------------------
public static void main(String[] args) {
new GraphicsDrawOvalMouseExam();
} // End - public static void main(String[] args)
//-----------------------------------------------------------------------------------------------------------
// 생성자
//-----------------------------------------------------------------------------------------------------------
GraphicsDrawOvalMouseExam() {
setTitle("마우스 드래깅으로 타원 그리기");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setSize(800, 600);
setVisible(true);
} // End - 생성자
//-----------------------------------------------------------------------------------------------------------
// 차원을 그릴 Panel 작성한다. 이 Panel에 마우스 리스너를 구현한다.
//-----------------------------------------------------------------------------------------------------------
class MyPanel extends JPanel {
Point start = null, end = null;
//-----------------------------------------------------------------------------------------------------------
// 생성자
//-----------------------------------------------------------------------------------------------------------
public MyPanel() {
MyMouseListener listener = new MyMouseListener();
// Listener 를 아래의 두 리스너에 공통으로 등록한다.
addMouseListener(listener);
addMouseMotionListener(listener);
} // End - public MyPanel()
//-----------------------------------------------------------------------------------------------------------
// class MyMouseListener extends MouseAdapter
//-----------------------------------------------------------------------------------------------------------
class MyMouseListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
start = e.getPoint(); // 마우스를 누른 곳의 좌표값을 가져온다.
}
public void mouseDragged(MouseEvent e) {
end = e.getPoint();
// repaint()가 호출이 되면 자바 플래폼에 의해서 MyPanel의 paintComponent()가 호출된다.
// 여기서 start와 end사이의 타원이 그려진다.
repaint();
}
} // End - class MyMouseListener extends MouseAdapter
//-----------------------------------------------------------------------------------------------------------
// public void paintComponent(Graphics g)
//-----------------------------------------------------------------------------------------------------------
public void paintComponent(Graphics g) {
super.paintComponent(g);
if(start == null) // 타원이 만들어지지 않은 상태
return;
g.setColor(Color.MAGENTA);
// Math.min : 그림이 그려지는 시작 위치 때문에 사용한다.
int x = Math.min(start.x, end.x);
int y = Math.min(start.y, end.y);
int width = Math.abs(start.x - end.x);
int height = Math.abs(start.y - end.y);
g.drawOval(x, y, width, height);
} // End - public void paintComponent(Graphics g)
} // End - class MyPanel extends JPanel
} // End - public class GraphicsDrawOvalMouseExam
'Language > Java' 카테고리의 다른 글
[Java] 실습 (Exception) (0) | 2022.08.24 |
---|---|
[Java] 미니 오목 게임 만들기 (0) | 2022.08.23 |
[Java] Math. (0) | 2022.08.22 |
[Java] 할당 연산자 (assignment operators) (0) | 2022.08.22 |
[Java] 기본 데이터 타입 크기 (0) | 2022.08.22 |