1-1 번
import java.awt.*;
import javax.swing.*;
public class Chapter12 extends JFrame {
Chapter12(){
setTitle("이미지 그리기 연습");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setSize(300,300);
setVisible(true);
}
class MyPanel extends JPanel {
ImageIcon icon = new ImageIcon("src/back.jpg");
Image img = icon.getImage();
public MyPanel() {
setLayout(new FlowLayout());
add(new JButton("Hide/Show"));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
}
}
static public void main(String[] args) {
new Chapter12();
}
}
1-2 번
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Chapter12 extends JFrame {
Chapter12(){
setTitle("이미지 그리기 연습");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setSize(300,300);
setVisible(true);
}
class MyPanel extends JPanel {
ImageIcon icon = new ImageIcon("src/back.jpg");
Image img = icon.getImage();
JButton button = new JButton("Hide/Show");
boolean isHide = true;
public MyPanel() {
setLayout(new FlowLayout());
add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(isHide){
isHide = false;
}else{
isHide = true;
}
MyPanel.this.repaint();
}
});
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
if(!isHide){
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
}
}
}
static public void main(String[] args) {
new Chapter12();
}
}
2번
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
public class Chapter12 extends JFrame {
Chapter12(){
setTitle("이미지 위에 원 드래깅 연습");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setSize(300,300);
setVisible(true);
}
class MyPanel extends JPanel {
ImageIcon icon = new ImageIcon("src/back.jpg");
Image img = icon.getImage();
Point point;
public MyPanel() {
setLayout(new FlowLayout());
addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
super.mouseDragged(e);
point = e.getPoint();
repaint();
}
});
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
if (point != null) {
g.setColor(Color.GREEN);
g.fillOval((int) point.getX(), (int)point.getY(), 20, 20);
}
}
}
static public void main(String[] args) {
new Chapter12();
}
}
3번
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Chapter12 extends JFrame {
public Chapter12(){
setTitle("이미지 레이블 드래깅 연습");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(null);
ImageIcon icon = new ImageIcon("src/apple.jpg");
JLabel imageLabel = new JLabel(icon);
imageLabel.setSize(icon.getIconHeight(),icon.getIconWidth());
imageLabel.setLocation(100,100);
MyMouseListener ml = new MyMouseListener();
imageLabel.addMouseListener(ml);
imageLabel.addMouseMotionListener(ml);
c.add(imageLabel);
setSize(300,300);
setVisible(true);
}
class MyMouseListener extends MouseAdapter {
Point startP;
public void mousePressed(MouseEvent e) {
startP = e.getPoint();
}
public void mouseReleased(MouseEvent e) {
Point endP = e.getPoint();
Component la = (JComponent)(e.getSource());
Point p = la.getLocation();
la.setLocation(p.x + endP.x - startP.x, p.y + endP.y - startP.y);
la.getParent().repaint();
}
public void mouseDragged(MouseEvent e) {
Point endP = e.getPoint();
Component la = (JComponent)(e.getSource());
Point p = la.getLocation();
la.setLocation(p.x + endP.x - startP.x, p.y + endP.y - startP.y);
la.getParent().repaint();
}
}
static public void main(String[] args) {
new Chapter12();
}
}
4번
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Chapter12 extends JFrame {
int imgWidth;
int imgHeight;
Point startPoint = new Point(0,0);
Point endPoint = new Point(0,0);
public Chapter12(){
setTitle("이미지 레이블 드래깅 연습");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setSize(300,300);
setVisible(true);
}
class MyPanel extends JPanel{
Image img;
ImageIcon icon;
MyPanel(){
icon = new ImageIcon("src/apple.jpg");
img = icon.getImage();
imgWidth = img.getWidth(this);
imgHeight = img.getHeight(this);
addMouseListener(new MyMouseListener());
addMouseMotionListener(new MyMouseListener());
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(img, (int)startPoint.getX(), (int)startPoint.getY(), icon.getIconWidth(), icon.getIconHeight(), this);
endPoint.setLocation(startPoint.getX() + imgWidth, startPoint.getY() + imgHeight);
}
}
class MyMouseListener extends MouseAdapter {
Point startP = new Point(50 ,50 );
public void mousePressed(MouseEvent e) {
startP = e.getPoint();
}
public void mouseReleased(MouseEvent e) {
Point endP = e.getPoint();
Component la = (JComponent)(e.getSource());
Point p = la.getLocation();
la.setLocation(p.x + endP.x - startP.x, p.y + endP.y - startP.y);
la.getParent().repaint();
}
public void mouseDragged(MouseEvent e) {
Point endP = e.getPoint();
Component la = (JComponent)(e.getSource());
Point p = la.getLocation();
la.setLocation(p.x + endP.x - startP.x, p.y + endP.y - startP.y);
la.getParent().repaint();
}
}
static public void main(String[] args) {
new Chapter12();
}
}
5번
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Chapter12 extends JFrame {
Chapter12(){
setTitle("그래픽 이미지 확대 축소 연습");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setSize(300,300);
setVisible(true);
getContentPane().setFocusable(true);
getContentPane().requestFocus();
}
class MyPanel extends JPanel {
ImageIcon icon = new ImageIcon("src/apple.jpg");
Image img = icon.getImage();
int width, height;
public MyPanel() {
width = img.getWidth(this);
height = img.getHeight(this);
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(e.getKeyChar() == '+') {
width = (int)(width * 1.1);
height = (int)(height * 1.1);
repaint();
}
else if(e.getKeyChar() == '-') {
width = (int)(width*0.9);
height = (int)(height*0.9);
repaint();
}
}
});
}
public void paintComponent(Graphics g) {
g.drawImage(img, 10, 10, width, height, this);
}
}
static public void main(String[] args) {
new Chapter12();
}
}
6-1번
import java.awt.*;
import javax.swing.*;
public class Chapter12 extends JFrame {
public Chapter12(){
setTitle("격자 그리기");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setVisible(true);
setSize(300, 300);
}
class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
for (int i = 1; i < 10; i++) {
g.setColor(Color.BLACK);
g.drawLine(0, this.getHeight() / 10 * i, this.getWidth(), this.getHeight() / 10 * i);
}
for (int i = 1; i < 10; i++) {
g.setColor(Color.BLACK);
g.drawLine( this.getWidth() / 10 * i, 0, this.getWidth() / 10 * i, this.getHeight());
}
}
}
static public void main(String[] args) {
new Chapter12();
}
}
6-2번
import java.awt.*;
import javax.swing.*;
public class Chapter12 extends JFrame {
public Chapter12(){
setTitle("격자 그리기");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setVisible(true);
setSize(300, 300);
}
class MyPanel extends JPanel {
public void paintComponent(Graphics g){
int width, height;
int count = 10;
for(int i = 0; i < 10; i++) {
width = this.getWidth();
height = this.getHeight();
int ci = count * i;
g.setColor(Color.BLACK);
g.drawLine(ci, height / 2, width / 2, ci);
g.drawLine(width / 2, ci, width - ci, height / 2);
g.drawLine(width - ci, height / 2, width / 2, height - ci);
g.drawLine(width / 2, height - ci, ci, height / 2);
}
}
}
static public void main(String[] args) {
new Chapter12();
}
}
7번
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class Chapter12 extends JFrame {
public Chapter12(){
super("마우스로 페다각형 그리기");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setSize(300,300);
setVisible(true);
}
class MyPanel extends JPanel {
Vector<Integer> x = new Vector<Integer>();
Vector<Integer> y = new Vector<Integer>();
public MyPanel() {
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
x.add(e.getX());
y.add(e.getY());
repaint();
}
});
}
public void paintComponent(Graphics g) {
int xArr [] = new int [x.size()];
int yArr [] = new int [y.size()];
for(int i=0; i<x.size(); i++) {
xArr[i] = x.get(i);
yArr[i] = y.get(i);
}
g.setColor(Color.MAGENTA);
g.drawPolygon(xArr, yArr, xArr.length);
}
}
static public void main(String[] args) {
new Chapter12();
}
}
8번
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
public class Chapter12 extends JFrame{
class Circle{
Point center, start;
int radius;
Circle(Point point){
center = point;
}
void centerPosition(){
int x, y;
x = (start.x - center.x) * (start.x - center.x);
y = (start.y - center.y) * (start.y - center.y);
radius = (int)Math.sqrt(x + y);
}
}
Circle nCircle;
Chapter12(){
setTitle("마우스로 원 그리기");
setDefaultCloseOperation(3);
Container c = getContentPane();
c.add(new MyPanel());
setSize(1000, 500);
setVisible(true);
}
class MyPanel extends JPanel{
Vector<Circle> vector = new Vector<Circle>(); //Vector를 통해 그려졌던 모든 Circle 기억
public MyPanel(){
addMouseListener(new MyMouseListener());
addMouseMotionListener(new MyMouseListener());
}
public void paintComponent(Graphics g){
for(int i = 0; i < vector.size(); i++){
Circle drawCircle = vector.elementAt(i);
g.setColor(Color.MAGENTA);
g.drawOval(drawCircle.start.x - drawCircle.radius / 2,
drawCircle.start.y - drawCircle.radius/2,
drawCircle.radius, drawCircle.radius);
}
}
class MyMouseListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
nCircle = new Circle(e.getPoint());
}
public void mouseDragged(MouseEvent e) {
nCircle.start = e.getPoint();
nCircle.centerPosition();
vector.add(nCircle);
repaint();
}
}
}
public static void main(String[] args){
new Chapter12();
}
}
9번
import java.awt.*;
import javax.swing.*;
public class Chapter12 extends JFrame {
public Chapter12(){
setTitle("Blue Label 만들기");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new FlowLayout());
BlueLabel blueLabel1 = new BlueLabel("hello");
blueLabel1.setBackground(Color.RED);
blueLabel1.setForeground(Color.YELLOW);
c.add(blueLabel1);
BlueLabel2 blueLabel2 = new BlueLabel2("Big Hello");
blueLabel2.setOpaque(true);
blueLabel2.setFont(new Font("TimesRoman", Font.ITALIC, 50));
blueLabel2.setBackground(Color.RED);
blueLabel2.setForeground(Color.MAGENTA);
c.add(blueLabel2);
setSize(300,200);
setVisible(true);
}
class BlueLabel extends JLabel {
public BlueLabel(String text) {
super(text);
}
public void paintComponent(Graphics g) {
g.setColor(Color.BLUE);
g.fillRect(0,0,this.getWidth(), this.getHeight());
super.paintComponent(g);
}
}
class BlueLabel2 extends JLabel {
public BlueLabel2(String text) {
super(text);
}
public void setBackground(Color c) {
super.setBackground(Color.BLUE);
return;
}
}
public static void main(String[] args) {
new Chapter12();
}
}
10번
import javafx.concurrent.Task;
import javax.swing.*;
import java.awt.*;
public class Chapter12 extends JFrame{
public Chapter12(){
setTitle("그래픽 이미지 연습");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setSize(400, 400);
setVisible(true);
}
class MyPanel extends JPanel{
private ImageIcon icon = new ImageIcon("src/back.jpg");
private Image image = icon.getImage();
public void paintComponent(Graphics g){
int widthDivide = this.getWidth() / 2;
int heightDivide = this.getHeight() / 2;
g.setClip(0, 0, widthDivide - 5, heightDivide - 5);
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
g.setClip(getWidth() / 2 + 5, 0, widthDivide - 5, heightDivide - 5);
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
g.setClip(0, getHeight() / 2 + 5, widthDivide - 5, heightDivide - 5);
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
g.setClip(getWidth() / 2 + 5, getHeight() / 2 + 5, widthDivide - 5, heightDivide - 5);
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
}
}
public static void main(String[] args){
new Chapter12();
}
}
11번
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Chapter12 extends JFrame {
int [] data = {25,25,25,25};
int [] arcAngle = new int [4];
Color [] color = {Color.RED, Color.BLUE, Color.MAGENTA, Color.ORANGE};
String [] itemName = {"apple", "cherry", "strawberry", "prune"};
JTextField [] tf = new JTextField [4];
ChartPanel chartPanel = new ChartPanel();
Chapter12() {
setTitle("파이 차트 그리기");
setDefaultCloseOperation(3);
Container c = getContentPane();
c.add(new InputPanel(), BorderLayout.NORTH);
c.add(chartPanel, BorderLayout.CENTER);
setSize(500,350);
setVisible(true);
drawChart();
}
void drawChart() {
int sum=0;
for(int i=0; i<data.length; i++) {
data[i] = Integer.parseInt(tf[i].getText());
sum+=data[i];
}
if(sum == 0) return;
for(int i=0; i<data.length; i++)
arcAngle[i]=(int)Math.round((double)data[i]/(double)sum*360);
chartPanel.repaint();
}
class InputPanel extends JPanel {
InputPanel() {
setBackground(Color.LIGHT_GRAY);
for(int i=0; i<tf.length; i++) {
tf[i] = new JTextField("25", 5);
tf[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
drawChart();
}
});
add(new JLabel(itemName[i]));
add(tf[i]);
}
}
}
class ChartPanel extends JPanel {
public void paintComponent(Graphics g) {
int startAngle = 0;
for(int i=0; i<data.length; i++) {
g.setColor(color[i]);
g.drawString(itemName[i]+" "+Math.round(arcAngle[i]*100./360.)+"%", 50+i*100, 20);
}
for(int i=0; i<data.length; i++) {
g.setColor(color[i]);
g.fillArc(150,50,200,200,startAngle, arcAngle[i]);
startAngle = startAngle + arcAngle[i];
}
}
}
public static void main(String [] args) {
new Chapter12();
}
}
'대학교 수업 > Java 프로그래밍' 카테고리의 다른 글
[Java] 명품 자바 프로그래밍 14장 실습문제 (1~6) (0) | 2022.12.05 |
---|---|
[Java] 명품 자바 프로그래밍 13장 실습문제 (1~8) (0) | 2022.12.05 |
[Java] 명품 자바 프로그래밍 10장 실습문제 (0) | 2022.10.11 |
[Java] 명품 자바 프로그래밍 10장 Open Challenge (0) | 2022.10.11 |
[Java] 명품 자바 프로그래밍 9장 Open Challenge (0) | 2022.10.11 |