该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
左键涂鸦,右键橡皮擦。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author zhaowei
*/
public class ScribbleDemo extends JFrame{
public ScribbleDemo(){
getContentPane().add(new ScribblePanel(),BorderLayout.CENTER);
}
public static void main(String[] args){
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
ScribbleDemo frame = new ScribbleDemo();
frame.setTitle("White Board");
frame.setSize(screenSize.width/2,screenSize.height/2);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLocation(screenSize.width/4,screenSize.height/4);
}
}
class ScribblePanel extends JPanel
implements MouseListener,MouseMotionListener{
final int CIRCLESIZE = 20;
private Point lineStart = new Point(0,0);
private Graphics g;
public ScribblePanel(){
addMouseListener(this);
addMouseMotionListener(this);
}
public void mouseClicked(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mouseReleased(MouseEvent e){
}
public void mousePressed(MouseEvent e){
lineStart.move(e.getX(),e.getY());
}
public void mouseDragged(MouseEvent e){
g = getGraphics();
if(e.isMetaDown()){
g.setColor(getBackground());
g.fillOval(e.getX()-CIRCLESIZE/2,e.getY()-CIRCLESIZE/2, CIRCLESIZE,CIRCLESIZE);
}
else{
g.setColor(Color.BLACK);
g.drawLine(lineStart.x,lineStart.y,e.getX(), e.getY());
}
lineStart.move(e.getX(), e.getY());
g.dispose();
}
public void mouseMoved(MouseEvent e){
}
}