/*画直线和添加文本练习练习*/
import java.awt.*;
import java.awt.event.*;
public class DrawLine {
public static void main(String[]args){
new Demo();
}
}
class Demo extends Frame{
private Frame f;
int x;
int y;
int endx;
int endy;
Demo(){
Demo1();
}
public void paint(Graphics g){
g.drawLine(x, y, endx, endy);
}
private void Demo1(){
f=new Frame();
f.setBounds(300, 300, 300, 300);
//加载一下事件监听器。
init();
f.setVisible(true);
}
public void init(){
//千万要记住把监听器注册到组件上。
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
f.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
x=e.getX();
y=e.getY();
}
public void mouseReleased(MouseEvent e){
Graphics g=getGraphics();
endx= e.getX();
endy=e.getY();
//画直线,颜色是红色
g.setColor(Color.RED);
//设置当前字体,颜色
g.setFont(new Font("隶书",/*如果改为null则会使用系统默认字体*/Font.ITALIC|Font.BOLD,/*字体的样式*/30/*字体的大小*/));
//打印鼠标按下时显示坐标的文本。
g.drawString(new String(x+","+y), x, y);//new String(x+","+y)获取坐标,x, y在坐标x,y处输出。
//g.drawString(new String(), x, y);
//打印鼠标释放时显示坐标的文本
g.drawString(new String(e.getX()+","+e.getY()), e.getX(), e.getY());
//g.drawString(new String(), e.getX(), e.getY());
g.drawLine(x, y, e.getX(), e.getY());
}
});
}
}
import java.awt.*;
import java.awt.event.*;
public class DrawLine {
public static void main(String[]args){
new Demo();
}
}
class Demo extends Frame{
private Frame f;
int x;
int y;
int endx;
int endy;
Demo(){
Demo1();
}
public void paint(Graphics g){
g.drawLine(x, y, endx, endy);
}
private void Demo1(){
f=new Frame();
f.setBounds(300, 300, 300, 300);
//加载一下事件监听器。
init();
f.setVisible(true);
}
public void init(){
//千万要记住把监听器注册到组件上。
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
f.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
x=e.getX();
y=e.getY();
}
public void mouseReleased(MouseEvent e){
Graphics g=getGraphics();
endx= e.getX();
endy=e.getY();
//画直线,颜色是红色
g.setColor(Color.RED);
//设置当前字体,颜色
g.setFont(new Font("隶书",/*如果改为null则会使用系统默认字体*/Font.ITALIC|Font.BOLD,/*字体的样式*/30/*字体的大小*/));
//打印鼠标按下时显示坐标的文本。
g.drawString(new String(x+","+y), x, y);//new String(x+","+y)获取坐标,x, y在坐标x,y处输出。
//g.drawString(new String(), x, y);
//打印鼠标释放时显示坐标的文本
g.drawString(new String(e.getX()+","+e.getY()), e.getX(), e.getY());
//g.drawString(new String(), e.getX(), e.getY());
g.drawLine(x, y, e.getX(), e.getY());
}
});
}
}
public Demo(){
如果改为Graphics g=this.getGraphics();的话,提示我创建getGraphics()方法。如果改为Graphics g=f.getGraphics();的话,运行的时候直线没有重绘上。
你再帮我看下,麻烦你了。
please post the error message too
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Demo$2.mouseReleased(DrawLine.java:58)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)