?? drawingpanel.java
字號:
//********************************************************************
// DrawingShapes.java Author: XieXing
//
// Panel allows user to create a shape.
//********************************************************************
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
public class DrawingPanel extends JPanel {
// 存儲圖形
private ArrayList shapesArrayList = new ArrayList();
// 當前繪制圖形
private Shapes currentShape;
// 初始化不選擇
private int currentType = 0;
//默認未選擇填充
private boolean fillShape = false;
// 初始化默認繪圖顏色
private Color currentColor = new Color( 204, 204, 204 );
// 構造函數
public DrawingPanel()
{
addMouseListener(
new MouseAdapter() // 匿名內部類
{
// 監聽鼠標按下按鈕事件
public void mousePressed(MouseEvent event)
{
paintPanelMousePressed(event);
}
}
);
addMouseMotionListener(
new MouseMotionAdapter() // 匿名內部類
{
// 監聽鼠標在繪圖區拖拽事件
public void mouseDragged(MouseEvent event)
{
paintPanelMouseDragged(event);
}
}
);
}
// 改變當前繪圖圖形
public void setCurrentShapeType(int shape)
{
currentType = shape;
}
//設置填充圖形
public void setfillShape (boolean fill)
{
fillShape = fill;
}
// 改變當前顏色
public void setCurrentColor(Color shapeColor)
{
currentColor = shapeColor;
}
// 創建新圖形
public void paintPanelMousePressed(MouseEvent event)
{
if(fillShape == false)
{
switch(currentType)
{
case 0: // 創建一個Line對象并賦值給Shapes類型的變量
currentShape = new Line( event.getX(), event.getY(),
event.getX(), event.getY(), currentColor );
break;
case 1: // 創建一個Rectangle對象并賦值給Shapes類型的變量
currentShape = new Rectangle( event.getX(), event.getY(),
event.getX(), event.getY(), currentColor );
break;
case 2: // 創建一個Oval對象并賦值給Shapes類型的變量
currentShape = new Oval( event.getX(), event.getY(),
event.getX(), event.getY(), currentColor );
break;
case 3: // 創建一個Circle對象并賦值給Shapes類型的變量
currentShape = new Circle( event.getX(), event.getY(),
event.getX(), event.getY(), currentColor );
break;
}
}
else
{
switch(currentType)
{
case 0: // 創建一個Line對象并賦值給Shapes類型的變量
currentShape = new Line( event.getX(), event.getY(),
event.getX(), event.getY(), currentColor );
break;
case 1: // 創建一個Rectangle對象并賦值給Shapes類型的變量
currentShape = new FillRect( event.getX(), event.getY(),
event.getX(), event.getY(), currentColor );
break;
case 2: // 創建一個Oval對象并賦值給Shapes類型的變量
currentShape = new FillOval( event.getX(), event.getY(),
event.getX(), event.getY(), currentColor );
break;
case 3: // 創建一個Circle對象并賦值給Shapes類型的變量
currentShape = new FillCircle( event.getX(), event.getY(),
event.getX(), event.getY(), currentColor );
break;
}
}
shapesArrayList.add( currentShape );
}
// 響應鼠標拖拽,設置當前圖形的坐標
public void paintPanelMouseDragged( MouseEvent event )
{
currentShape.setX2( event.getX() );
currentShape.setY2( event.getY() );
repaint();
}
// 利用迭代器繪制每一個圖形
public void paintComponent( Graphics g )
{
super.paintComponent( g );
Shapes nextShape;
Iterator shapesIterator = shapesArrayList.iterator();
while ( shapesIterator.hasNext() )
{
nextShape = ( Shapes ) shapesIterator.next();
nextShape.draw( g );
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -