我对程序的结构不清楚,不知每一不要做什么?有什么用?控件,监听器,事件,类,接口之间的关系
不太明白,敲了很多程序了,一知半解.我自学java,真难.
愿各位大虾指教.这是程序结构:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.geom.*;
class MouseTest
{
public static void main(String[] args){ }
}class MFrame extends JFrame
{
public MFrame(){ }
}class MPanel extends JPanel
{
public MPanel(){ }
public void paintComponent(Graphics g){ } public Rectangle2D find(Point2D p){ }
public void add(Point2D p){ }
public void remove(Rectangle2D s){ }
private static final int d = 10;
private ArrayList<Rectangle2D> squares;
private Rectangle2D current;
private class MouseHandler extends MouseAdapter
{
public void mousePressed(MouseEvent event){ } public void mouseClicked(MouseEvent event){ }
} private class MouseMotionHandler implements MouseMotionListener
{
public void mouseMoved(MouseEvent event){ } public void mouseDragged(MouseEvent event){ }
}
}这是所有代码:import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.geom.*;
class MouseTest{
public static void main(String[] args){
MFrame f=new MFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}class MFrame extends JFrame{
public MFrame(){
setTitle("MouseTest");
setSize(300,200);
MPanel p=new MPanel();
add(p);
}
}class MPanel extends JPanel
{
public MPanel()
{
squares=new ArrayList<Rectangle2D>();
current=null;
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
} public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g; for(Rectangle2D r:squares)
g2.draw(r);
}
public Rectangle2D find(Point2D p)
{
for(Rectangle2D r:squares){
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-d/2,y-d/2,d,d);
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 d = 10;
private ArrayList<Rectangle2D> squares;
private Rectangle2D current;
private class MouseHandler extends MouseAdapter
{
public void mousePressed(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-d/2,y-d/2,d,d);
repaint();
}
}
}
}
不太明白,敲了很多程序了,一知半解.我自学java,真难.
愿各位大虾指教.这是程序结构:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.geom.*;
class MouseTest
{
public static void main(String[] args){ }
}class MFrame extends JFrame
{
public MFrame(){ }
}class MPanel extends JPanel
{
public MPanel(){ }
public void paintComponent(Graphics g){ } public Rectangle2D find(Point2D p){ }
public void add(Point2D p){ }
public void remove(Rectangle2D s){ }
private static final int d = 10;
private ArrayList<Rectangle2D> squares;
private Rectangle2D current;
private class MouseHandler extends MouseAdapter
{
public void mousePressed(MouseEvent event){ } public void mouseClicked(MouseEvent event){ }
} private class MouseMotionHandler implements MouseMotionListener
{
public void mouseMoved(MouseEvent event){ } public void mouseDragged(MouseEvent event){ }
}
}这是所有代码:import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.geom.*;
class MouseTest{
public static void main(String[] args){
MFrame f=new MFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}class MFrame extends JFrame{
public MFrame(){
setTitle("MouseTest");
setSize(300,200);
MPanel p=new MPanel();
add(p);
}
}class MPanel extends JPanel
{
public MPanel()
{
squares=new ArrayList<Rectangle2D>();
current=null;
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
} public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g; for(Rectangle2D r:squares)
g2.draw(r);
}
public Rectangle2D find(Point2D p)
{
for(Rectangle2D r:squares){
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-d/2,y-d/2,d,d);
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 d = 10;
private ArrayList<Rectangle2D> squares;
private Rectangle2D current;
private class MouseHandler extends MouseAdapter
{
public void mousePressed(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-d/2,y-d/2,d,d);
repaint();
}
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货