import java.awt.*;import javax.swing.*;
import java.awt.event.*;
import java.applet.*;
import java.awt.geom.*;class drawPanel extends JPanel implements MouseListener
{
drawPanel()
{
addMouseListener(this);
}
public void paint(Graphics g)
{
Graphics2D g2=(Graphics2D)g;
for(int i=0;i<600;i+=40)
{
Line2D.Float Line1=new Line2D.Float(0,i+40,600,i+40);
g2.setPaint(Color.black);
g2.draw(Line1);
}
for(int j=0;j<600;j+=40)
{
Line2D.Float Line1=new Line2D.Float(j+40,0,j+40,600);
g2.setPaint(Color.black);
g2.draw(Line1);
}
}
public void mousePressed(MouseEvent e) 
{

public void paint(Graphics g)
{
Graphics2D g2=(Graphics2D)g;
Ellipse2D.Float e1=new Ellipse2D.Float(0,0,40,40);
g2.draw(e1);
addMouseListener(this);
}
}
}class jfmain 
{
jfmain()
{
JFrame.setDefaultLookAndFeelDecorated(true);  // 设置窗体图标显示位默认方式
JFrame f=new JFrame("主界面"); // 创建JFrame对象
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 点击窗口关闭图标关闭窗口
drawPanel pa=new drawPanel(); // 创建容器JPanel类对象 
Container cp=f.getContentPane(); // 创建JFrame的容器对象
cp.add(pa,BorderLayout.CENTER);
f.setLocation(0,0);
f.setSize(1024,800);
f.setResizable(false);
f.setVisible(true);
}

public static void main(String[] args)
{
jfmain jf=new jfmain();
}
}
这个程序的public void mousePressed(MouseEvent e) 为什么没有起到作用?
望大家多多指点

解决方案 »

  1.   

    加句if(e.getsourse()==ture) 试试
      

  2.   

    同楼上的意见
    你的mousePressed 事件 没有时间源
    因此不会触发事件
      

  3.   

    import java.awt.*;import javax.swing.*;
    import java.awt.event.*;
    import java.applet.*;
    import java.awt.geom.*;class drawPanel extends JPanel implements MouseListener
    {
    drawPanel()
    {
    this.addMouseListener(this);
    }
    public void paint(Graphics g)
    {
    Graphics2D g2=(Graphics2D)g;
    for(int i=0;i<600;i+=40)
    {
    Line2D.Float Line1=new Line2D.Float(0,i+40,600,i+40);
    g2.setPaint(Color.black);
    g2.draw(Line1);
    }
    for(int j=0;j<600;j+=40)
    {
    Line2D.Float Line1=new Line2D.Float(j+40,0,j+40,600);
    g2.setPaint(Color.black);
    g2.draw(Line1);
    }
    }
    public void mousePressed(MouseEvent e) 
    {


            /* {
    int x=(int)e.getX();
    int y=(int)e.getY();
    ChessPoint_black chesspoint_black=new ChessPoint_black(new drawPanel());
    }
    */
    }

    public void mouseReleased(MouseEvent e){}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mouseClicked(MouseEvent e)
    {
    if(e.getButton()==e.BUTTON1) //当按下鼠标左键时下棋子。
    {
    int x=e.getX();
    int y=e.getY();
    System.out.println("x="+x);
    ChessPoint_black chesspoint_black=new ChessPoint_black(new drawPanel());
    } }
    }
    //负责创建黑色棋子的类:
    class ChessPoint_black extends Canvas implements MouseListener
    {
    drawPanel drawP=null;
    ChessPoint_black(drawPanel p)
    {  
    setSize(40,40);
    drawP=p; 
    addMouseListener(this);
    }
    public void paint(Graphics g)         //绘制棋子的大小。
    {  
    g.setColor(Color.black);
    g.fillOval(0,0,40,40);

    public void mouseReleased(MouseEvent e){}
    public void mouseEntered(MouseEvent e){}
    public void mouseExited(MouseEvent e) {}
    public void mouseClicked(MouseEvent e){}
    public void mousePressed(MouseEvent e){}
    }public class jfmain extends Frame
    {
    drawPanel chesspad=new drawPanel();
    jfmain()
    {
    JFrame.setDefaultLookAndFeelDecorated(true);  // 设置窗体图标显示位默认方式
    JFrame f=new JFrame("主界面"); // 创建JFrame对象
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 点击窗口关闭图标关闭窗口
    drawPanel pa=new drawPanel(); // 创建容器JPanel类对象 
    Container cp=f.getContentPane(); // 创建JFrame的容器对象
    cp.add(pa,BorderLayout.CENTER);
    f.setLocation(0,0);
    f.setSize(1024,800);
    f.setResizable(false);
    add(chesspad);

    f.setVisible(true);

    }

    public static void main(String[] args)
    {
    jfmain jf=new jfmain();
    }
    }
    经过修改,但是还是不能显示棋子??不知道问题出在那里?
    望大家指点!!!谢谢了
      

  4.   

    原因是没有把 ChessPoint_black注册drawPanel
    this.add(chesspoint_black);
    谢谢大家继续关注
    待续中....