좌표 0.0으로부터 마우스로 점을 찍을때마다
선이 연결되어 그려지는 소스입니다.
불필요한 부분이 있습니다.
잘 활용하시길 바라겠습니다.
너무 급하게 만들었던거라. 이보다 더 잘 만드실 수 있을겁니다.
1. MouseDemoPanel.java 파일입니다.
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Vector;
/** MouseDemoPanel.java by F. M. Carrano LISTING 17-7
Marks and reports the location of mouse clicks.
*/
public class MouseDemoPanel extends JPanel
{
private int mouseX, mouseY;
private int PostX, PostY; //마우스 클릭 이전값 저장
private final JLabel messageOut;
private int count=0; //얼마만큼 마우스를 눌렀는지 세어줍니다.
private static final int PANEL_WIDTH = 300;
private static final int PANEL_HEIGHT = 200;
// size and color of dot to mark mouse location
private static final int RADIUS = 2;
private static final int DIAMETER = 2 * RADIUS;
private static final Color DOT_COLOR = Color.BLUE;
public MouseDemoPanel()
{
mouseX = 0;
mouseY = 0;
messageOut = new JLabel();
add(messageOut);
addMouseListener(new ClickListener()); // listen for mouse clicks
setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
} // end default constructor
//페인트 컴포넌트 부분을 바꿧습니다.
public void paintComponent(Graphics pen)
{
// paint dot centered at mouse click
pen.setColor(DOT_COLOR);
pen.fillOval(mouseX - RADIUS, mouseY - RADIUS, DIAMETER, DIAMETER);
if(count==1){
pen.drawLine(0, 0, mouseX, mouseY);
PostX=mouseX;
PostY=mouseY;
System.out.println("2");
}
else if(count>1){
pen.drawLine(PostX, PostY, mouseX, mouseY);
PostX=mouseX;
PostY=mouseY;
System.out.println("3");
}
} // end paintComponent
// Listens for mouse clicks
private class ClickListener implements MouseListener
{
public void mouseClicked(MouseEvent click)
{
// the mouse button has been clicked on this panel;
// get coordinates of mouse click
count++;
mouseX = click.getX();
mouseY = click.getY();
System.out.println("1");
repaint();
} // end mouseClicked
// Ignore these actions on this panel:
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
} // end ClickListener
} // end MouseDemoPanel
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Vector;
/** MouseDemoPanel.java by F. M. Carrano LISTING 17-7
Marks and reports the location of mouse clicks.
*/
public class MouseDemoPanel extends JPanel
{
private int mouseX, mouseY;
private int PostX, PostY; //마우스 클릭 이전값 저장
private final JLabel messageOut;
private int count=0; //얼마만큼 마우스를 눌렀는지 세어줍니다.
private static final int PANEL_WIDTH = 300;
private static final int PANEL_HEIGHT = 200;
// size and color of dot to mark mouse location
private static final int RADIUS = 2;
private static final int DIAMETER = 2 * RADIUS;
private static final Color DOT_COLOR = Color.BLUE;
public MouseDemoPanel()
{
mouseX = 0;
mouseY = 0;
messageOut = new JLabel();
add(messageOut);
addMouseListener(new ClickListener()); // listen for mouse clicks
setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
} // end default constructor
//페인트 컴포넌트 부분을 바꿧습니다.
public void paintComponent(Graphics pen)
{
// paint dot centered at mouse click
pen.setColor(DOT_COLOR);
pen.fillOval(mouseX - RADIUS, mouseY - RADIUS, DIAMETER, DIAMETER);
if(count==1){
pen.drawLine(0, 0, mouseX, mouseY);
PostX=mouseX;
PostY=mouseY;
System.out.println("2");
}
else if(count>1){
pen.drawLine(PostX, PostY, mouseX, mouseY);
PostX=mouseX;
PostY=mouseY;
System.out.println("3");
}
} // end paintComponent
// Listens for mouse clicks
private class ClickListener implements MouseListener
{
public void mouseClicked(MouseEvent click)
{
// the mouse button has been clicked on this panel;
// get coordinates of mouse click
count++;
mouseX = click.getX();
mouseY = click.getY();
System.out.println("1");
repaint();
} // end mouseClicked
// Ignore these actions on this panel:
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
} // end ClickListener
} // end MouseDemoPanel
2. MouseDemoDriver.java 파일입니다.
import javax.swing.JFrame;
/** MouseDemoDriver.java by F. M. Carrano LISTING 17-8
A driver for the class MouseDemoPanel.
*/
public class MouseDemoDriver
{
public static void main(String[] args)
{
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setTitle("Mouse Demo");
MouseDemoPanel panel = new MouseDemoPanel();
window.add(panel);
window.pack();
window.setVisible(true);
} // end main
} // end MouseDemoDriver
/** MouseDemoDriver.java by F. M. Carrano LISTING 17-8
A driver for the class MouseDemoPanel.
*/
public class MouseDemoDriver
{
public static void main(String[] args)
{
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setTitle("Mouse Demo");
MouseDemoPanel panel = new MouseDemoPanel();
window.add(panel);
window.pack();
window.setVisible(true);
} // end main
} // end MouseDemoDriver
'프로그래밍 > 자바소스 및 자료' 카테고리의 다른 글
[자바소스] 구구단 출력 프로그램(while문 사용) (0) | 2011.07.27 |
---|---|
[자바소스] 단위변환(kilos,grams,pounds,ounces) (0) | 2011.07.26 |
[자료 - 링크] 자바가상머신 설치 파일입니다. JAVA SE (0) | 2011.07.18 |
[실습] print(), println(), printf()과 개행문자 (0) | 2011.07.14 |
[자료 - 링크] JAVA 개발툴 이클립스 Java EE Developer - 헬리오스, 인디고 버젼(32bit, 64bit) (0) | 2011.07.14 |