close
參考答案
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; } }); } }
執行結果
全站熱搜
留言列表