用JAVA画直线 怎么通过4个方向键移动来画连续的直线? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【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 画线需要使用到坐标,可以做个applet。可以使用鼠标监听接口(keylistener),方向键的键值好像是37,38,39,40吧。你返回keycode看看就可以移动了 主要就是监听面板的键盘事件,具体代码如下: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) { } }} 多多看看API,看看Graphics类就知道了 MySQL数据库插入图片问题 一道面试逻辑思维题, 基础题:转换 急!!高手们,请问Vector、ArrayList和List的异同! 一个使用java包的简单问题 请教高手!这段程序中到底出了什么问题???? 大神写swing都是事先布置UI么,用的什么软件 怎样运行java 急急急。。请问如何设置tomcat3.2.3的最大连接数。 FTP上传文件无效(创建文件夹正常) 字符串的小问题 程序溢出问题
楼主【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
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) {
}
}}