參考答案
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
class JDD01
{
public static void main(String[] args)
{
new MyFrame();
}
}
class MyFrame extends JFrame
{
Color curColor;
MyFrame()
{
//視窗大小、標題、位置與關閉事件設定
setSize(640,480);
setTitle("畫筆功能");
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
//加入自訂容器至中央區塊
setLayout(new BorderLayout());
add(new MyPanel(this), BorderLayout.CENTER);
setVisible(true);
}
}
class MyPanel extends Panel
{
MyFrame parent;
int curX,curY,lastX=-1,lastY=-1;
public MyPanel(MyFrame p)
{
parent = p;
setSize(600,480);
setBackground(Color.WHITE);
//當滑鼠按下時
this.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
lastX=e.getX();
lastY=e.getY();//紀錄目前座標
}
});
//當滑鼠拖曳時
this.addMouseMotionListener(new MouseAdapter(){
public void mouseDragged(MouseEvent e){
Graphics g = MyPanel.this.getGraphics();
g.setColor(parent.curColor);
curX=e.getX();
curY=e.getY();
//從最後紀錄的座標畫至目前座標
g.drawLine(lastX, lastY, curX, curY);
//繪製完畢後,目前的座標成為下次繪製的起始座標
lastX=curX;
lastY=curY;
}
});
}
}
執行結果
文章標籤
全站熱搜
