【发布时间】:2011-04-10 17:31:22
【问题描述】:
现在下面的代码应该在黑色画布上绘制一个 onMouseDragged 圆圈。 不幸的是它没有(= 我错过了什么吗?
提前谢谢...
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.applet.*;
import java.awt.Graphics.*;
public class IdrawApplet extends Applet {
int mosX;
int mosY;
Panel pGadgets;
Canvas myCanvas;
Label lRed;
TextField tfRed;
TextField tfGreen;
TextField tfBlue;
Label lGreen;
Label lBlue;
Graphics g;
public void init() {
g = getGraphics();
lRed = new Label("Red-value: ");
lBlue = new Label("Blue-value: ");
lGreen = new Label("Green-value: ");
tfRed = new TextField();
tfRed.setText("255");
tfGreen = new TextField();
tfGreen.setText("255");
tfBlue = new TextField();
tfBlue.setText("255");
pGadgets = new Panel();
pGadgets.setLayout(new GridLayout(1, 6, 5, 5));
add(pGadgets);
pGadgets.add(lRed);
pGadgets.add(tfRed);
pGadgets.add(lGreen);
pGadgets.add(tfGreen);
pGadgets.add(lBlue);
pGadgets.add(tfBlue);
myCanvas = new Canvas();
myCanvas.setBackground(new Color(0,0,0));
myCanvas.setBounds(0, 0, 600, 400);
add(myCanvas);
myCanvas.addMouseMotionListener(new MouseMotionListener() {
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
paint(g);
}
});
}
public void paint(Graphics g) {
g.setColor(Color.green);
g.fillOval(mosX, mosY, 30, 30);
}
}
【问题讨论】:
-
感谢“编辑”。代码未按预期显示。
-
看起来不像
mosX和mosY设置在任何地方。 -
更改为:public void mouseDragged(MouseEvent e) { // TODO 自动生成的方法 stub mosX = e.getX(); mosY = e.getY();油漆(g); }还是什么都没有……
-
不要使用应在内部使用的
paint()。你应该打电话给repaint()。就像现在一样,您使用null调用paint(),因为g永远不会被设置。 -
另外,请参阅我的回答。你想在画布上绘制,而不是在组件上
标签: java graphics applet drawing