2011-11-20 6 views
1

기본적으로 이미지가로드되어 있고 이미지의 일부를 클릭하면 채우기가없는 사각형이 나타납니다. 이미지의 다른 부분을 다시 클릭하면 해당 사각형이 다시 한 번 표시됩니다. 클릭 할 때마다 동일한 사각형이 나타납니다.이미지에서 사각형 이동은 어떻게합니까?

지금까지이 코드를 사용했지만 이미지를 표시하는 방법을 모르겠습니다. 내 파일 디렉토리의 이미지. 이미 파일 디렉토리에서 이미지를 가져 오는 코드를 만들었습니다.

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 

import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 

public class MP2 extends JPanel implements MouseListener{ 

    JFrame frame; 
    JPanel panel; 

    int x = 0; 
    int y = 0; 
    String input; 

    public MP2(){ 

    } 

    public static void main(String[] args){ 
     JFrame frame = new JFrame(); 
     MP2 panel = new MP2(); 
     panel.addMouseListener(panel); 
     frame.add(panel); 
     frame.setSize(200,200); 
     frame.setVisible(true); 

    } 

    public void mouseClicked(MouseEvent event) { 
     // TODO Auto-generated method stub 

     this.x = event.getX(); 
     this.y = event.getY(); 
     this.repaint(); 
     input = JOptionPane.showInputDialog("Something pops out"); 
     System.out.println(input); 

    } 

    public void mouseEntered(MouseEvent arg0) { 
     // TODO Auto-generated method stub 
    } 

    public void mouseExited(MouseEvent arg0) { 
     // TODO Auto-generated method stub 

    } 

    public void mousePressed(MouseEvent arg0) { 
     // TODO Auto-generated method stub 

    } 

    public void mouseReleased(MouseEvent arg0) { 
     // TODO Auto-generated method stub 

    } 

    public void paintComponent(Graphics g){ 
     super.paintComponent(g); 

     // this.setBackground(Color.white); *Sets the bg color of the panel 

     g.setColor(new Color(255,0,0)); 
     g.drawRect(x, y, 100, 100); 
    } 
} 
+0

당신의 목표는 분명하지 않습니다. – mre

+0

이미지의 일부를 클릭하면 사각형이 나타납니다. 그게 전부 야. – alicedimarco

+0

init에서 이미지를로드 한 다음 페인팅 코드를 재정의해야하고 거기에서 현재 표시된 것으로 표시된 이미지의 사각형을 blit해야하는 것처럼 들립니다. – Nerdtron

답변

1

this.x이 this.y는 그리려는 사각형이 아닌 JPanel의 x와 y를 나타냅니다. rectX와 rectY라는 두 개의 추가 필드를 만들어야합니다. 이것들은 mouseClicked로 설정되어 paintComponent()에 의해 사용됩니다.

수정

죄송합니다. 나는 지금 혼란 스럽다. 당신은 x와 y를 선언합니다. 이것들은 Component에서 정의 된 x와 y와 혼동 될 수 있기 때문에 여전히 이름을 변경해야하지만 문제는 아닙니다. 코드를 실행하고 클릭하면 대화 상자와 함께 빨간색 사각형이 나타납니다. 그래서 나는 무엇이 문제인지 잘 모르겠다 ???

+0

어디에 넣어야합니까? – alicedimarco

+0

문제는 이미지 위에 사각형을 넣어야한다는 것입니다.) – alicedimarco

+0

파일의 아무 곳에 나 단어 이미지가 표시되지 않습니다. paintComponent 어딘가에 g.drawImage()를 호출해야한다고 생각합니다. – user949300

2

The Glass Pane에 사각형 그리기를 보려는 경우가 있습니다 (예 : GlassPaneDemo). 예를 들어 paintComponent()에서 g.fillOval()g.drawRect()으로 바꿉니다.

이미지를 표시하는 방법을 모르겠습니다.

exampleJLabel에 이미지를 표시하는 방법을 보여줍니다.

관련 문제