如何在加入其它控件的Frame中绘制自己想要的东西?

fyjin99 2008-12-22 01:56:59
建立了一个Frame其中加入了一个Canvas,并且在Canvas中显示了图像,现在想要根据鼠标动作绘制一些线条,应该如何进行绘制(绘制后的线条显示在图像上)?
...全文
51 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fyjin99 2008-12-24
  • 打赏
  • 举报
回复
谢谢了,我也是这样想的,可是就是不行,不知道哪里出毛病了(:-……
fyjin99 2008-12-23
  • 打赏
  • 举报
回复
通过paint(Graphics g)实现?
我继承了Canvas类,在其中的paint中写入了要绘制的线条,可是根本显示不出来。同样,继承了Frame类,在其中的paint中写入了要绘制的线条也不起作用。
gongfuliang 2008-12-23
  • 打赏
  • 举报
回复
简单的代码,你自己看看吧

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;

public class Test extends JFrame {

public Test() {
getContentPane().add(new MyCanvas());
setSize(200, 200);
}

class MyCanvas extends Canvas implements MouseListener, MouseMotionListener {
int x1, y1, x2, y2;

public MyCanvas() {
setBackground(Color.white);

addMouseListener(this);
addMouseMotionListener(this);
}

@Override
public void paint(Graphics g) {
g.setColor(Color.red);
g.drawLine(x1, y1, x2, y2);
}

public void mouseClicked(MouseEvent e) {

}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}

public void mousePressed(MouseEvent e) {
x2 = e.getX();
y2 = e.getY();
}

public void mouseReleased(MouseEvent e) {

}

public void mouseDragged(MouseEvent e) {
x1 = x2;
y1 = y2;
x2 = e.getX();
y2 = e.getY();
paint(getGraphics());
}

public void mouseMoved(MouseEvent e) {

}
}

public static void main(String[] args){
Test frame = new Test();
frame.setVisible(true);
}
}
gongfuliang 2008-12-22
  • 打赏
  • 举报
回复
添加鼠标监听,通过paint(Graphics g)实现

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧