디시인사이드 갤러리

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

갤러리 본문 영역

코세형

개초짜(119.198) 2013.03.24 13:55:14
조회 84 추천 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/14 - -
AD 휴대폰 액세서리 SALE 운영자 25/07/15 - -
351957 팬티엄 D 945면 아직 사용가능? [2] ㅇㅅㅇ(220.117) 13.03.24 68 0
351956 아 내가 빠가인가; [4] 잉여(183.99) 13.03.24 57 0
351954 개콘은 [1] de(183.103) 13.03.24 55 0
351952 이거 설명좀 부탁드려요...ㅜㅜ 좆밥(39.7) 13.03.24 37 0
351951 php 공부하는데 html을 책 사고 공부할까 아니면 인 21344214(211.189) 13.03.24 40 0
351950 형들 대학 수치해석 과제인데 이것 좀 가르켜줘 ㅠㅜ [1] 포YOU갤로그로 이동합니다. 13.03.24 57 0
351946 c++ESPRESO 책 어떻게생각해요? [2] Melf갤로그로 이동합니다. 13.03.24 66 0
351943 노트북 살라카는데 ㅊㅊ 해주세염! [1] ddd(125.135) 13.03.24 54 0
351942 c언어 버블함수 좀 봐주세요. [4] dd(14.45) 13.03.24 181 0
351941 옥산휴게소 도착 여긴 어디지?? [4] komaya(223.62) 13.03.24 57 0
351940 pi값외우기 [3] tino갤로그로 이동합니다. 13.03.24 81 0
351939 뇌자알 시리즈 책 전부다 정독하고 이해해도, 겉핥기 수준밖에 안됨? [4] ㅇㅇ(222.112) 13.03.24 112 0
351938 절벽건너는거 멘사문제 [3] 543543갤로그로 이동합니다. 13.03.24 368 0
351937 프갤 형님들 vs2010에서 c로 만든 exe파일 아이콘 바꿀수잇나염? [2] 93년생미필(211.245) 13.03.24 54 0
351935 저도 씹뉴비지만.. 코세행님이나 다른 네임드 행님들 힘드시겠어요... [5] Melf갤로그로 이동합니다. 13.03.24 103 0
351934 ㅇㅇ<= 얘 어디갔냐? 저번주에 피자 존나 잘 처먹었는데 규식이(218.153) 13.03.24 51 0
351933 assembly program 루키롤(125.130) 13.03.24 51 0
351932 오늘의 마지막노래 ㄵㅇ(182.214) 13.03.24 34 0
351931 아 배부르다 [1] 에어로홍갤로그로 이동합니다. 13.03.24 64 0
351930 php에 goto없음?? [3] erer(121.176) 13.03.24 88 0
351928 형들 질문하나 할께요.. 산토리니(49.143) 13.03.24 39 0
351927 심심하다 밑에 보니까 위상정렬 글있는데 [8] 규식이(218.153) 13.03.24 113 0
351926 코드성 이것도 알지 ? [6] ㄵㅇ(182.214) 13.03.24 91 0
351925 x 하면 안좋은 추억이있는데 [4] ㄵㅇ(182.214) 13.03.24 65 0
351923 X-Japan은 명반이많은듯 [1] ㄵㅇ(182.214) 13.03.24 56 0
351922 미래에 대한 고민이많다 ㄵㅇ(182.214) 13.03.24 46 0
351921 아는 사람은 졸라 빡치는 짤.gif [1] d(1.214) 13.03.24 211 0
351919 0xffff를 short와 unsigned short로 표현했을때 차이점 [2] 미치겄다(211.207) 13.03.24 196 0
351918 c++ 레퍼런스 책은 뭐가 본좌임????????????? [1] (125.177) 13.03.24 67 0
351917 레알 마지막지질문. C언어 문자열 찾는법좀 [1] icetream(119.198) 13.03.24 51 0
351916 내말에 답이없네.. 그럼 마지막으로 c socket질문 답좀 [3] icetream(119.198) 13.03.24 40 0
351915 형들 C++ 말이야 [3] 자 다음(203.241) 13.03.24 80 0
351914 아.. 출장 지금 출발해야되네.. 아 지겹다.. 부산까지 언제가지.. [8] 꼬마야갤로그로 이동합니다. 13.03.24 99 0
351913 그리고 형들 이거 C로 IRC접속 소스 짜봤는데 안되는이유좀 ㅠ [3] icetream(119.198) 13.03.24 67 0
351912 디씨인사이드 보안갤러리 하나 팟으면하는데 [1] icetream(119.198) 13.03.24 99 0
351910 변수로 바꾼다는게 이렇게 하는게맞나요; [4] 짱짱맨(175.199) 13.03.24 61 0
351908 횽들아 왜 C는 소켓이 이렇게 괴랄함? [6] icetream(119.198) 13.03.24 87 0
351906 이렇게 뜹니다 왜이러죠?? [3] Catrina갤로그로 이동합니다. 13.03.24 38 0
351904 프갤러는 과제는 해주는데 왠 아저씨가와서 버그좀 잡아달라하면 빵터질듯 [3] ㅇㅇ(119.201) 13.03.24 73 0
351903 형들 공부해서 다시왔어 매틀랩질문점.. [3] gorosia(124.49) 13.03.24 49 0
351902 %f 면 소수도 뜨는거 아닌가요?? [2] 짱짱맨(175.199) 13.03.24 62 0
351900 아 게임 아이템효과구현졸라귀찮다 개발개발(110.47) 13.03.24 37 0
351899 Melf님 죄송하지만 마지막으로 하나만 더 물어볼게요.. [1] 호수(59.23) 13.03.24 32 0
351898 c뉴비의 궁금점을 해결해주세요 [7] Catrina갤로그로 이동합니다. 13.03.24 75 0
351897 코드 질문있어요 ㅠㅠ [10] 캬오크갤로그로 이동합니다. 13.03.24 65 0
351896 지금의 KLDP를 보고있노라면 [8] 땡칠도사갤로그로 이동합니다. 13.03.24 138 0
351894 to 포YOU [13] 꼬마야갤로그로 이동합니다. 13.03.24 70 0
351893 c++에서 이거 어떻게 해석 해줘야 되는 코드임? [1] Enky갤로그로 이동합니다. 13.03.24 78 0
351892 프로그래밍언어론 강의같은거 있는데 없음?;;;;;;;;;;;;;; [4] asd(58.140) 13.03.24 74 0
351891 형들제발 나좀구원해주라 아오미치겠다 ㅡㅡ PHP문제 이거때문에 이틀밤을샘 [4] ㄷ1ㄷ1ㄷ(121.176) 13.03.24 72 0
뉴스 '이색 듀엣' 태레, 윤수일 '황홀한 고백' 리메이크 M/V 티저 공개  디시트렌드 07.16
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2