import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.*;
import java.awt.event.*;


public class ImageCanvas extends Frame implements ActionListener {
   private Button openButton; // 버튼
   private Image image; // 이미지
   private TextField point;
   public ImageCanvas(String title){
       super(title);
      
   }


   public ImageCanvas() {
      makeUI();
   }
   // UI 구성
   private void makeUI() {
      this.setTitle("Image Canvas");
      this.setLayout(new BorderLayout());
      this.setSize(800, 800);
      this.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent we) {
            System.exit(0);
         }
      });
     
      // 이미지 불러오기 버튼
      Panel pnl = new Panel();
      point = new TextField(10);
      pnl.setBackground(Color.gray);
      pnl.addMouseListener(new MouseAdapter()
      {
       public void mouseClicked(MouseEvent e){
        point.setText("X:"+e.getX() + "Y:" + e.getY());
       }
      });
    //프레임에 배치
     
      openButton = new Button("Load Image");
      pnl.add(openButton);
      add(point,"North");
      add(pnl,"Center");
      openButton.addActionListener(this);
      this.add(pnl, BorderLayout.SOUTH);
      this.setVisible(true);
   }
   // 버튼 눌렸을 때 처리
   public void actionPerformed(ActionEvent ae) {
      if (ae.getSource() == openButton) {
         // 파일 선택 다이얼로그 생성
         FileDialog fd = new FileDialog(this);
         fd.setTitle("Select Image");
         fd.setSize(300, 100);
         fd.setVisible(true);
         // 파일 선택 후 이미지 불러오기
         loadImage(fd.getDirectory() + fd.getFile());
      }
   }
 //이미지 불러오기
   private void loadImage(String filePath) {
       //파일 다이얼로그로부터 선택된 파일 경로로 이미지 파일 생성
       Image img = Toolkit.getDefaultToolkit().getImage(filePath);
       //null이 아니면 전역 변수에 할당
       if (img != null) {
           image = img;
          
           //이미지 새로 그리기
           repaint();
       }
   }
   //그리는 메소드
   public void paint(Graphics g) {
       //이미지가 null이 아니면 이미지 그리기
       if (image != null)
           //파라미터: 이미지, X좌표, Y좌표, 이미지 관찰자(생략 가능)
           //g.drawImage(image, 0, 50, this);
           //파라미터: 이미지, X좌표, Y좌표, 이미지 가로 크기, 이미지 세로 크기, 이미지 관찰자(생략 가능)
           //this는 Frame을 상속받은 ImageCanvas 객체 자체로서

           //Frame으로부터 상속받은 가로와 세로의 크기를 알 수 있는 메소드를 사용 가능합니다.

           g.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), this);
   }

   public static void main(String[] args) {
      new ImageCanvas();
     

   }

 

 

 

아 지금 뭔가 다한거 같은데 좌표가 안나오네요 ㅠㅠㅠ

뭔가 제가 중요한걸 빼먹은거 같은데 ㅠㅠㅠ

형들 조공이라는게 이런거야??