请教画线问题. 覆盖JComponent的paint(Graphics g)方法! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你看以下的代码就明白了import java.awt.event.*;import java.awt.*;import java.applet.*;import java.util.Vector;public class DrawLine extends Applet { DrawPanel panel; public void init() { setLayout(new BorderLayout()); panel = new DrawPanel(); add("Center",panel); } public void destroy() { remove(panel); } public static void main(String args[]) { Frame frame = new Frame("DrawLine"); DrawLine drawLine = new DrawLine(); drawLine.init(); drawLine.start(); frame.add("Center",drawLine); frame.setSize(300,300); frame.show(); }}class DrawPanel extends Panel implements MouseListener,MouseMotionListener { Vector lines = new Vector(); int x1,y1;//start int x2,y2;//end public DrawPanel() { setBackground(Color.white); addMouseListener(this); addMouseMotionListener(this); } public void mouseDragged(MouseEvent e) { e.consume(); x2 = e.getX(); y2 = e.getY(); repaint(); } public void mousePressed(MouseEvent e) { e.consume(); x1 = e.getX(); y1 = e.getY(); x2 = -1;//标识,作用有2点A和B } public void mouseReleased(MouseEvent e) { e.consume(); lines.addElement(new Rectangle(x1,y1,e.getX(),e.getY())); x2 = -1; repaint(); } public void mouseMoved(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } public void paint(Graphics g) { int np = lines.size(); g.setColor(getForeground()); for (int i = 0;i < np;i++) { Rectangle r = (Rectangle)lines.elementAt(i); if (r.width != -1) { g.drawLine(r.x,r.y,r.width,r.height); } else { g.drawLine(r.x,r.y,r.x,r.y);//若按下鼠标后立即放开,则画一个点.(作用A) } } if (x2 != -1) { g.drawLine(x1,y1,x2,y2);//鼠标移动中的时候,画还未确定的线段.(作用B) } }}这个是applet 的 你改下就行了 关于Eclipse的一个配置 急!!本人想做一个小程序IO请高手指点。。 谁能帮我把这个代码编译通过阿,受不了了。。。。。。。。。。。。。。 创建包的问题 Ruby会取代Java吗? 对象公用问题,求教 为何查询数据库时提示:非法的游标状态? 怪问题若干 一个菜鸟才会问的问题 mapper映射文件,sql 语句中用到两个实体类的参数怎么写 lixiang823517请进(关于JSplitPane) 如何自动重新启动一个进程(急)
import java.awt.event.*;
import java.awt.*;import java.applet.*;import java.util.Vector;public class DrawLine extends Applet {
DrawPanel panel; public void init() {
setLayout(new BorderLayout());
panel = new DrawPanel();
add("Center",panel);
} public void destroy() {
remove(panel);
} public static void main(String args[]) {
Frame frame = new Frame("DrawLine");
DrawLine drawLine = new DrawLine();
drawLine.init();
drawLine.start(); frame.add("Center",drawLine);
frame.setSize(300,300);
frame.show();
}}class DrawPanel extends Panel implements MouseListener,MouseMotionListener {
Vector lines = new Vector();
int x1,y1;//start
int x2,y2;//end public DrawPanel() {
setBackground(Color.white);
addMouseListener(this);
addMouseMotionListener(this);
} public void mouseDragged(MouseEvent e) {
e.consume();
x2 = e.getX();
y2 = e.getY();
repaint();
} public void mousePressed(MouseEvent e) {
e.consume();
x1 = e.getX();
y1 = e.getY();
x2 = -1;//标识,作用有2点A和B
} public void mouseReleased(MouseEvent e) {
e.consume();
lines.addElement(new Rectangle(x1,y1,e.getX(),e.getY()));
x2 = -1;
repaint();
} public void mouseMoved(MouseEvent e) {
} public void mouseEntered(MouseEvent e) {
} public void mouseExited(MouseEvent e) {
} public void mouseClicked(MouseEvent e) {
} public void paint(Graphics g) {
int np = lines.size(); g.setColor(getForeground()); for (int i = 0;i < np;i++) {
Rectangle r = (Rectangle)lines.elementAt(i);
if (r.width != -1) {
g.drawLine(r.x,r.y,r.width,r.height);
}
else {
g.drawLine(r.x,r.y,r.x,r.y);//若按下鼠标后立即放开,则画一个点.(作用A)
}
} if (x2 != -1) {
g.drawLine(x1,y1,x2,y2);//鼠标移动中的时候,画还未确定的线段.(作用B)
}
}}
这个是applet 的 你改下就行了