디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

코세형

개초짜(119.198) 2013.03.24 13:55:14
조회 86 추천 0 댓글 0


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.*;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import javax.swing.*;

 

public class ImageCanvas extends Frame implements ActionListener {
   private Button openButton; // 버튼
   private Image image; // 이미지
   private TextField point;
   Graphics gbuf;
 
   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);
    
      setBackground (Color.gray);
     
    
      this.addMouseListener(new MouseAdapter()
      {
          public void mouseClicked(MouseEvent e){
              point.setText("X:"+e.getX() + "Y:" + e.getY());
              int ImgRGB = ((BufferedImage) image).getRGB(e.getX(), e.getY()); // 이미지 좌표별 RGB값 추출
              int red = (ImgRGB & 0x00FF0000) >> 16;
              // 2^8으로 구성되어있는데, RGB로 구성있기 때문에 16만큼 쉬프트하면 RED
              // 8만큼 쉬프트 하면 G
              // 쉬프트를 하지 않으면 B 값을 추출할 수 있습니다.
              // [R=2^8] [B=2^8] [G]
              int green = (ImgRGB & 0x0000FF00) >> 8;
              int blue = (ImgRGB & 0x000000FF);
              point.setText("r: "+red+" ,g: "+green+" , b: "+blue);
          }

        private int getRGB(int x, int y) {
            // TODO Auto-generated method stub
            return 0;
        }
      }
      );
    
    
    //프레임에 배치
     
      openButton = new Button("Load Image");
      pnl.add(openButton);
      add(point,"North");
         
      openButton.addActionListener(this);
      this.add(pnl, BorderLayout.SOUTH);
      this.setVisible(true);
    
  
  
}
protected static int getRGB(int x, int y) {
    // TODO Auto-generated method stub
    return 0;
}
// 버튼 눌렸을 때 처리
   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();
    
   }
}




이걸 코딩하면 이미지를 불러오고 좌표를 나타내는거까지는 되는데 클릭했을시



Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
 at ImageCanvas$2.mouseClicked(ImageCanvas.java:60)
 at java.awt.Component.processMouseEvent(Component.java:6508)
 at java.awt.Component.processEvent(Component.java:6270)
 at java.awt.Container.processEvent(Container.java:2229)
 at java.awt.Window.processEvent(Window.java:2016)
 at java.awt.Component.dispatchEventImpl(Component.java:4861)
 at java.awt.Container.dispatchEventImpl(Container.java:2287)
 at java.awt.Window.dispatchEventImpl(Window.java:2713)
 at java.awt.Component.dispatchEvent(Component.java:4687)
 at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
 at java.awt.EventQueue.access$000(EventQueue.java:101)
 at java.awt.EventQueue$3.run(EventQueue.java:666)
 at java.awt.EventQueue$3.run(EventQueue.java:664)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
 at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
 at java.awt.EventQueue$4.run(EventQueue.java:680)
 at java.awt.EventQueue$4.run(EventQueue.java:678)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
 at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
 at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
 at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
 at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)



이런 오류가 떠...

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 반응이 재밌어서 자꾸만 놀리고 싶은 리액션 좋은 스타는? 운영자 25/07/28 - -
AD 휴대폰 액세서리 세일 중임! 운영자 25/07/28 - -
352530 100분토론에 변희재 성재기 출연 백이.갤로그로 이동합니다. 13.03.27 38 1
352529 컴공이 갈수있는 공기업 전산직좀 추천해주삼 ㅁㄴㅇㄹ(124.28) 13.03.27 75 0
352528 요즘 학교를 다니면서 어의없는경우 + 현제짜고있는프로그램 질문좀 [6] Melf갤로그로 이동합니다. 13.03.27 108 0
352527 ㅇㅇ 성님 저도 프로그래밍 가르쳐 주세여 [6] DD(222.120) 13.03.27 85 0
352524 UTF-16 사랑합니다. [4] dot(113.30) 13.03.27 91 0
352521 영어 좀 잘하고 싶다... [2] ㅁㄴㅇㄹ(121.173) 13.03.27 59 0
352518 그냥 오늘 내 아이디어 [2] LastCorona갤로그로 이동합니다. 13.03.27 58 0
352517 새기들아 슬기 짱짱걸 모르냐 [4] 야간편돌이(175.196) 13.03.27 81 0
352516 번개친다!! [2] ?(175.203) 13.03.27 47 0
352515 모아놓은 조공짤 풀어볼께 [9] LastCorona갤로그로 이동합니다. 13.03.27 155 0
352514 이렇게 코딩 저렇게 코딩 하며 시행착오를 거치다보면 [6] 야간편돌이(175.196) 13.03.27 141 0
352513 요즘은 아이디어 시대니까 [18] 백이.갤로그로 이동합니다. 13.03.27 150 0
352512 아오 배포 엿같네. [1] LastCorona갤로그로 이동합니다. 13.03.27 49 0
352510 다들영어공부 [6] 스으으갤로그로 이동합니다. 13.03.26 99 0
352509 형들 운영체제 책좀 질문할께 [11] 자 다음(117.111) 13.03.26 170 0
352508 프갤완전 좋은동네같아!! [3] piglove06갤로그로 이동합니다. 13.03.26 64 0
352507 애새키들 숙제글 물어볼때 욕을 드립다 싸주는 이유가 있다 [10] 씹죶(116.33) 13.03.26 164 2
352504 취업같은거 안할건데 고닥공 안해도됨?? [34] 작성자(175.215) 13.03.26 206 0
352503 ? 형님 존경합니다. 절 제자로 받아주세여!! 조공짤 [7] piglove06갤로그로 이동합니다. 13.03.26 140 0
352501 mfc 더블버퍼 만드는데.... [9] 여자는2D갤로그로 이동합니다. 13.03.26 105 0
352500 고양이자랑타임인가요? [1] 근성가이(211.237) 13.03.26 61 0
352499 늦었지만 천안함 폭침 3주기 묵념.sleep(10000); [12] Packet갤로그로 이동합니다. 13.03.26 185 0
352498 클리앙하는 애들은 프갤서도 정치성향 티가난다 어휴 클리앙으로 꺼져 [2] 철도하루(119.201) 13.03.26 115 1
352497 우리고양이보단 약한듯; ㄵㅇ(182.210) 13.03.26 56 0
352496 와 씨밬 좌좀 갤러리 됬노.. Packet갤로그로 이동합니다. 13.03.26 81 1
352495 모의스포츠배팅 만들고싶은대 불법아니겠지? [1] 근성가이(211.237) 13.03.26 121 0
352493 자바 에러좀 잡아줘여. 엄청 사소한거같은데 안풀리네... [20] piglove06갤로그로 이동합니다. 13.03.26 204 0
352491 간단한거 질문점 [1] 54321(121.186) 13.03.26 47 0
352490 프로젝트할때 [10] HiKiKoMoRi갤로그로 이동합니다. 13.03.26 124 0
352489 씨언어 묵찌빠 코드짜는거 쉽냐? [5] ㅇㅇ(175.223) 13.03.26 118 0
352487 나모웹이랑 드림위버 이런프로그램은 [8] 연댕(183.108) 13.03.26 143 0
352486 아 성님들 포인터가 진짜 진짜 너무 이해가 안됨...ㅜㅜㅜ [31] ㅇ_ㅇ(119.56) 13.03.26 145 0
352485 플밍 부터 잘하고 설계를 잘해야 마지막에 보안 공부하는거아님? [4] ss(121.186) 13.03.26 108 0
352483 형님들 간단한 문제인데 머라고 대답해야 좋죠? [6] Savior(180.231) 13.03.26 61 0
352481 여자랑 대화하는 좋은 메소드 없나요?? [7] 인간(110.35) 13.03.26 105 0
352477 인하공 인증 [11] ㅁㄴㅇㄹ(124.28) 13.03.26 224 0
352475 한국 1 : 1 카타르 [2] 백이(182.214) 13.03.26 48 0
352473 프갤에 패킷좀 본다해서 찾아왔다 [2] 롤게이(123.109) 13.03.26 100 0
352471 오늘 테스트하다가 삽질해서 또 못올라갔음.. 02 랑 20 이랑 헷갈려서 [7] 꼬마야갤로그로 이동합니다. 13.03.26 74 0
352470 mysql 고수 성님들 도와주십쇼... [5] 123(58.122) 13.03.26 63 0
352469 codesafer모음집.7z [1] 모스(218.51) 13.03.26 140 0
352468 어두우니 아늑해 ㄵㅇ(182.210) 13.03.26 24 0
352467 트위터api쓰는데 포스팅 제한있나요? [1] ㅡㅡ(112.205) 13.03.26 59 0
352466 현재 프로그래밍 가르치는 직업학교에서는 선수과목으로 [2] 1(110.70) 13.03.26 93 0
352464 프로그래머한다고 다 닭집한다고 생각하지 마라 일반화의 오류다 [2] 1(110.70) 13.03.26 109 0
352463 유니티 돈안내면 테스트도못해봄? 근성가이(211.237) 13.03.26 41 0
352461 형들 스트링이 뭐야? [9] 살려줘(175.115) 13.03.26 109 0
352459 삽입정렬 [3] ㅇㅇ(14.45) 13.03.26 67 0
352458 Unity3d 경력 플그래머 구합니당 [hook](110.70) 13.03.26 65 0
352457 형들 수치해석 이분법 과제하고있는데 이것 좀 알려줘.... 포YOU갤로그로 이동합니다. 13.03.26 138 0
뉴스 '100인의 감정쇼' 김연자, '대한민국 최초' 북한 단독 콘서트서 입은 한복 공개! 디시트렌드 07.31
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2