怎么通过4个方向键移动来画连续的直线?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【ganggang1122】截止到2008-07-30 00:27:24的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:0                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=ganggang1122
      

  2.   

    画线需要使用到坐标,可以做个applet。可以使用鼠标监听接口(keylistener),方向键的键值好像是37,38,39,40吧。你返回keycode看看就可以移动了
      

  3.   

    主要就是监听面板的键盘事件,具体代码如下:
    package demo;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.util.ArrayList;
    import javax.swing.JFrame;
    import javax.swing.JPanel;public class DemoForDrawLineByKey extends JFrame { /**
     * <p>功能描述:[字段功能描述]</p>
     */
    private static final long serialVersionUID = -8155745524182056025L;
    private ArrayList<MyPoint> pointArrayList;
    private int intNowX = 10;
    private int intNowY = 10;
    private MyPanelForDrawLine panel;
    private int oldCode = 0;
    private int movePx = 3;
    private JPanel mainpanel;
    /**
     * Launch the application
     * 
     * @param args
     */
    public static void main(String args[]) {
    DemoForDrawLineByKey frame = new DemoForDrawLineByKey();
    frame.setBounds(100, 100, 500, 375);
    frame.setVisible(true);
    frame.init();
    }
    public void init() {
    panel.requestFocusInWindow();
    }
    /**
     * Create the frame
     */
    public DemoForDrawLineByKey() {
    super();
    setTitle("利用键盘画线");
    pointArrayList = new ArrayList<MyPoint>();
    getContentPane().setLayout(null);
    setBounds(100, 100, 500, 375);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainpanel = new JPanel();
    mainpanel.setBounds(0, 0, 492, 341);
    getContentPane().add(mainpanel);
    mainpanel.setLayout(null);
    panel = new MyPanelForDrawLine();
    panel.setBounds(0, 0, 492, 341);
    panel.requestFocusInWindow();
    mainpanel.add(panel); }
    class MyPanelForDrawLine extends JPanel {
    private static final long serialVersionUID = 3470945714820691208L;
    KeyListenerForPanel mKeyListenerForPanel = new KeyListenerForPanel();
    public MyPanelForDrawLine() {
    super();
    addKeyListener(mKeyListenerForPanel);
    }
    public void paintComponent(Graphics g) {
    super.paintComponents(g);
    g.setColor(Color.WHITE);
    g.fillRect(0, 0, getWidth(), getHeight());
    g.setColor(Color.BLACK);
    drawOldLine(g);
    g.fillRect(intNowX, intNowY, 3, 3);
    }
    public void drawOldLine(Graphics g) {
    if (pointArrayList.size() > 0) {
    Object tmpObj[] = pointArrayList.toArray();
    MyPoint lasePoint = null;
    if (tmpObj.length >= 1) {
    lasePoint = (MyPoint) tmpObj[tmpObj.length - 1];
    }
    for (int i = 0; i < tmpObj.length - 1; i++) {
    MyPoint tmpPoint1 = (MyPoint) tmpObj[i];
    MyPoint tmpPoint2 = (MyPoint) tmpObj[i + 1];
    g.drawLine(tmpPoint1.getPx(), tmpPoint1.getPy(), tmpPoint2
    .getPx(), tmpPoint2.getPy());
    }
    g.drawLine(lasePoint.getPx(), lasePoint.getPy(), intNowX,
    intNowY);
    }
    }
    }
    class MyPoint {
    int px = 0;
    int py = 0;
    public MyPoint(int x, int y) {
    px = x;
    py = y;
    }
    public int getPx() {
    return px;
    }
    public void setPx(int px) {
    this.px = px;
    }
    public int getPy() {
    return py;
    }
    public void setPy(int py) {
    this.py = py;
    }
    }
    class KeyListenerForPanel implements KeyListener {
    public void keyPressed(KeyEvent e) {
    int keycodeOfKey = e.getKeyCode();
    if (keycodeOfKey != oldCode) {
    oldCode = keycodeOfKey;
    MyPoint tmpPoint = new MyPoint(intNowX, intNowY);
    pointArrayList.add(tmpPoint);
    } else {
    switch (keycodeOfKey) { // 向上
    case KeyEvent.VK_UP :
    intNowY = intNowY - movePx; break;
    // 向下
    case KeyEvent.VK_DOWN :
    intNowY = intNowY + movePx;
    break;
    // 向左
    case KeyEvent.VK_LEFT :
    intNowX = intNowX - movePx;
    break;
    // 向右
    case KeyEvent.VK_RIGHT :
    intNowX = intNowX + movePx;
    break;
    }
    }
    panel.repaint();
    } public void keyReleased(KeyEvent e) {
    int keycodeOfKey = e.getKeyCode();
    if (keycodeOfKey != oldCode) {
    oldCode = keycodeOfKey;
    MyPoint tmpPoint = new MyPoint(intNowX, intNowY);
    pointArrayList.add(tmpPoint);
    } else {
    switch (keycodeOfKey) {
    // 向上
    case KeyEvent.VK_UP :
    intNowY = intNowY - movePx;
    break;
    // 向下
    case KeyEvent.VK_DOWN :
    intNowY = intNowY + movePx;
    break;
    // 向左
    case KeyEvent.VK_LEFT :
    intNowX = intNowX - movePx;
    break;
    // 向右
    case KeyEvent.VK_RIGHT :
    intNowX = intNowX + movePx;
    break;
    }
    }
    panel.repaint();
    }
    public void keyTyped(KeyEvent e) {
    }
    }}
      

  4.   

    多多看看API,看看Graphics类就知道了