覆盖JComponent的paint(Graphics g)方法!
解决方案 »
- myeclipse GUI 问题
- (经典问题)判断字符串是否由空格组成,空格分为全角和半角
- 想开发MP3播放器
- java如何实现点击label之后重命名?就像windows点击文件2次之后重命名那样
- 用web方式打开一StringBuffer变量中的数据
- 应聘Java,jsp,j2ee软件工程师笔试中可能出现的问题(能给出这些问题的答案吗)
- 关于RMI的运行
- 数据库连接池
- 如何将class文件加入jar文件中?
- 请教高手:有没有关于java实现加密方面的例程或站点,如用户输入后,点击按钮后,用java 加密。
- 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 的 你改下就行了