简单java程序改错!

简单java程序改错!,第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

本程序要实现的是随着鼠标点击,将在画布上话小方块。

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()


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8124855.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存