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();
}
}
아 지금 뭔가 다한거 같은데 좌표가 안나오네요 ㅠㅠㅠ
뭔가 제가 중요한걸 빼먹은거 같은데 ㅠㅠㅠ
형들 조공이라는게 이런거야??
조공을 빼먹으셨군요
어따대고코드질임요
갈켜줘 형들... 뭐가 빠진거야? 이것저것 붙여넣다 보니까 짬뽕댔나봐..
기본이 안되어 있네.. 사회생활 하기 힘들듯
응... 그냥 처음부터 다시 공부할까봐... 아직 학생이야 그리고...이제 막 입문한...ㅋㅋㅋㅋㅋ
조공이 빠졌네요
아..패널에 클릭리스너 주고 했는데 도대체 왜 안나오는거야--
와 전나 개 드럽네 자바
오 슈발 찾았다!!!