向各位高手求救!怎样在application中画图!我是一名非常菜的菜鸟,希望高手们能够进来帮忙一下! 我希望在程序中创建一个画图函数,当发生某事件时才调用这个画图函数!我在所看到的数都只是介绍applet的画图方法,我这里是用jframe的,请帮忙一下!由于我是刚学java,对java的程序不是了解很深如,因此希望程序能详细一点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 applet 画图跟 普通程序画图不是一样的么?! //MouseDraw.javapackage chapter7.MouseDraw;import java.util.*;import java.awt.*;import java.awt.event.*;public class MouseDraw{ public static void main(String[] args) { MouseFrame frame=new MouseFrame(); frame.addWindowListener(new Wadapt()); frame.setVisible(true); }}class MouseFrame extends Frame{ public MouseFrame() { setTitle("ÀûÓÃÊó±ê»æͼ"); setSize(300,300); //½«panel¼ÓÈëµ½frame MousePanel panel=new MousePanel(); add(panel); }}class MousePanel extends Panel implements MouseListener,MouseMotionListener{ LinkedList dataSaver=new LinkedList(); private int x,y,start_X,start_Y,old_X,old_Y; private boolean draw; public MousePanel() { addMouseListener(this); addMouseMotionListener(this); } public void mousePressed(MouseEvent evt) { start_X=evt.getX(); start_Y=evt.getY(); draw=false; } public void mouseReleased(MouseEvent evt) { x=evt.getX(); y=evt.getY(); repaint(); dataSaver.addLast(new int[]{start_X,start_Y,x,y}); } public void mouseClicked(MouseEvent evt){} public void mouseEntered(MouseEvent evt) { setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); } public void mouseExited(MouseEvent evt) { setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } public void mouseDragged(MouseEvent evt) { x=evt.getX(); y=evt.getY(); repaint(); } public void mouseMoved(MouseEvent evt){} public void update(Graphics g) { paint(g); } public void paint(Graphics g) { if(!draw) { old_X=x; old_Y=y; draw=true; } else { g.setColor(getBackground()); g.drawLine(start_X,start_Y,old_X,old_Y); old_X=x; old_Y=y; } g.setColor(getForeground()); g.drawLine(start_X,start_Y,x,y); Iterator data=dataSaver.iterator(); while(data.hasNext()) { int[] temp=(int[])(data.next()); g.drawLine(temp[0],temp[1],temp[2],temp[3]); } }}class Wadapt extends WindowAdapter{ public void windowClosing(WindowEvent evt) { Frame frm=(Frame)evt.getSource(); frm.setVisible(false); frm.dispose(); System.exit(0); }} 要想在一个组建上画图,只要重写这个组建的paintComponent(Graphics g)方法和paint(Graphics g),前者是组建初始化时系统自动调用的,后者是在过程中刷新使用的。Graphics 里提供了许多画图的方法,上面只用了画直线。其他自己看文档吧 用Graphics 可以画各种图形 java swing 中paint方法 FTP下载文件问题(按文件创建的时间下载) 请问怎样学好JAVA 数字格式化的问题.0的时候如何不显示? 数组问题 高难问题:applet里面如何取得session?因为要对applet的操作进行控制 UltraEdit和Jcreator编程时回车后大刮号“{ }”呈阶梯状,怎么样设置能在回车后“{ }”直接对齐? JTextPane仿setLineWrap自动换行功能问题 jtable高手请进。急!在线等待...谢谢! JAVA编程有搞头么? 关于instanceof运算符的问题 关于异常处理的问题
package chapter7.MouseDraw;
import java.util.*;
import java.awt.*;
import java.awt.event.*;public class MouseDraw
{
public static void main(String[] args)
{
MouseFrame frame=new MouseFrame();
frame.addWindowListener(new Wadapt());
frame.setVisible(true);
}
}class MouseFrame extends Frame
{
public MouseFrame()
{
setTitle("ÀûÓÃÊó±ê»æͼ");
setSize(300,300);
//½«panel¼ÓÈëµ½frame
MousePanel panel=new MousePanel();
add(panel);
}
}class MousePanel extends Panel implements MouseListener,MouseMotionListener
{
LinkedList dataSaver=new LinkedList();
private int x,y,start_X,start_Y,old_X,old_Y;
private boolean draw;
public MousePanel()
{
addMouseListener(this);
addMouseMotionListener(this);
} public void mousePressed(MouseEvent evt)
{
start_X=evt.getX();
start_Y=evt.getY();
draw=false;
}
public void mouseReleased(MouseEvent evt)
{
x=evt.getX();
y=evt.getY();
repaint();
dataSaver.addLast(new int[]{start_X,start_Y,x,y});
}
public void mouseClicked(MouseEvent evt){} public void mouseEntered(MouseEvent evt)
{
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
} public void mouseExited(MouseEvent evt)
{
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
} public void mouseDragged(MouseEvent evt)
{
x=evt.getX();
y=evt.getY();
repaint();
} public void mouseMoved(MouseEvent evt){}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
if(!draw)
{
old_X=x;
old_Y=y;
draw=true;
}
else
{
g.setColor(getBackground());
g.drawLine(start_X,start_Y,old_X,old_Y);
old_X=x;
old_Y=y;
}
g.setColor(getForeground());
g.drawLine(start_X,start_Y,x,y);
Iterator data=dataSaver.iterator();
while(data.hasNext())
{
int[] temp=(int[])(data.next());
g.drawLine(temp[0],temp[1],temp[2],temp[3]);
}
}
}class Wadapt extends WindowAdapter
{
public void windowClosing(WindowEvent evt)
{
Frame frm=(Frame)evt.getSource();
frm.setVisible(false);
frm.dispose();
System.exit(0);
}
}
前者是组建初始化时系统自动调用的,后者是在过程中刷新使用的。
Graphics 里提供了许多画图的方法,上面只用了画直线。其他自己看文档吧