黑马程序员技术交流社区
标题:
画图的问题,怎么样才能拿到画笔那?
[打印本页]
作者:
杨宗彬
时间:
2012-8-3 16:30
标题:
画图的问题,怎么样才能拿到画笔那?
本帖最后由 杨宗彬 于 2012-8-3 16:39 编辑
package com.yzb.GUI;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class DrawImage extends Frame {
/**
* @param args
*/
public DrawImage(String n){
super(n);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
super.windowClosing(e);
dispose();
System.exit(0);
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
DrawImage di = new DrawImage("DrawImage");
Image img = di.getToolkit().getImage("I:\\图片\\7_5006e8dbb35c9.jpg");
Graphics g = di.getGraphics();
di.setSize(500, 500);
di.setVisible(true);
while(!g.drawImage(img, 0, 0, di));
}
}
如果把上面那两行代码写成:di.getGraphics().drawImage(img,0,0,di);就能实现 为什么?
程序报空指针的异常。貌似是没拿到画笔,怎么回事?
作者:
王渠
时间:
2012-8-3 17:03
Graphics 类下面不都是用坐标来操作的吗?
觉得你所谓的笔,其实从操作习惯上来说,也就是鼠标。
那么就需要定义鼠标事件,觉得光是有一个frame是不够的,至少还要定义一个panel,其实自己也不清楚,但是就是觉得只有frame是不足的。
其他的可以给与建议。
鼠标事件的定义
其他的一些事件并没有复写,其实我也不知道这样做是否能实现,自己也想这样弄过,但是一直没做...
frame.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
//这个是鼠标在组件上面按下时,触发的事件。我们在此处获取到一个坐标。
public void mousePressed(MouseEvent e) {
X_1 = e.getX();
Y_1 = e.getY();
}
@Override
//这个是鼠标在组件上释放时,触发的事件。我们在此获取到第二个坐标
public void mouseReleased(MouseEvent e) {
X_2 = e.getX();
Y_2 = e.getY();
//将两个坐标交给Graphics类的drawLine方法。这样就可以在两点之间画出一条直线了。
//两处获取到的坐标都是相对于组件的坐标,而不是屏幕上的绝对坐标。
g.drawLine(X_1,X_2,X_2,Y_2);
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
});
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2