
问题描述:
本程序要实现的是随着鼠标点击,将在画布上话小方块。
import java.awt.*
import java.awt.event.*
import java.util.*
import java.awt.geom.*
import javax.swing.*
public class MouseTest
{
public static void main(String[] args)
{
MouseFrame frame=new MouseFrame()
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.show()
}
}
class MouseFrame extends JFrame
{
public MouseFrame()
{
setTitle("MouseTest")
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT)
MousePanel panel=new MousePanel()
Container contentPane=getContentPane()
contentPane.add(panel)
}
public static final int DEFAULT_WIDTH=300
public static final int DEFAULT_HEIGHT=200
}
class MousePanel extends JPanel
{
public MousePanel()
{
squares=new ArrayList()
current=null
addMouseListener(new MouseHandler())
addMouseMotionListener(new MouseMotionHandler())
}
public void paintComponent(Graphics g)
{
super.paintComponent(g)
Graphics2D g2=(Graphics2D)g
g2.setPaint(Color.RED)
for(int i=0i<squares.size()i++)
g2.draw((Rectangle2D)squares.get(i))
}
public Rectangle2D find(Point2D p)
{
for(int i=0i<squares.size()i++)
{
Rectangle2D r=(Rectangle2D)squares.get(i)
if(r.contains(p)) return r
}
return null
}
public void add(Point2D p)
{
double x=p.getX()
double y=p.getY()
current=new Rectangle2D.Double(x-SIDELENGTH/2,y-SIDELENGTH/2,SIDELENGTH,SIDELENGTH)
squares.add(current)
repaint()
}
public void remove(Rectangle2D s)
{
if(s==null)return
if(s==current) current=null
squares.remove(s)
repaint()
}
private static final int SIDELENGTH=10
private ArrayList squares
private Rectangle2D current
private class MouseHandler extends MouseAdapter
{
public void mouseHandler(MouseEvent event)
{
current=find(event.getPoint())
if(current==null)
add(event.getPoint())
}
public void mouseClicked(MouseEvent event)
{
current=find(event.getPoint())
if(current==null&&event.getClickCount()>=2)
remove(current)
}
}
private class MouseMotionHandler implements MouseMotionListener
{
public void mouseMoved(MouseEvent event)
{
if(find(event.getPoint())==null)
setCursor(Cursor.getDefaultCursor())
else
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR))
}
public void mouseDragged(MouseEvent event)
{
if (current!=null)
{
int x=event.getX()
int y=event.getY()
current.setFrame(x-SIDELENGTH/2,y-SIDELENGTH/2,SIDELENGTH,SIDELENGTH)
repaint()
}
}
}
}
解析:
这地方是改错的,不是给你实现功能的,哈哈
1、FileOutputStream out = new FileInputStream(outputFile)其中new 后面的是输出流,FileOutputStream(outputFile);
2、out.read(data)// 将数写到out流中
既然是写,则用write()另外说下,read()方法是没有参数的。
3、out.exit()// 关闭out流
关闭用close()方法
exit()使系统调用,System.exit()不能是out.exit()
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)