我在jframe上画矩形框,已知a矩形(x,y,width,height),b矩形(x,y,width,height)好多组。
怎么样可以实现,鼠标移到a矩形,让a矩形的边框变色。同理移到b矩形,让b的边框变色。

解决方案 »

  1.   

    矩形我是用 Graphics 画的。
      

  2.   

    其实看下swing相关的API应该能解决问题的
      

  3.   

    简陋了点,不考虑矩形重叠的情况,也没有消除闪烁,
    反正大概是这么个意思吧,主要用MouseMotionListenerimport java.awt.*;
    import java.awt.event.*;
    import javax.swing.JFrame;public class CSDN extends JFrame {

    private static final long serialVersionUID = 1L;

    public int x = 0;
    public int y = 0;

    public CSDN(){
    super("test");
    this.setFocusable(true);
    setVisible(true);
    init();
    pack();
    setLocation(200, 200);
    setSize(400,400);
    this.addWindowListener(new WindowListener());
    }

    public void init(){
    getContentPane().add(new Board());
    }

    class Board extends Canvas implements MouseMotionListener{ private static final long serialVersionUID = 1L; public Board(){
    this.addMouseMotionListener(this);
    }

    public void update(Graphics g){
    paint(g);
    }

    public void paint(Graphics g){
    Dimension size = getSize();
    g.setColor(Color.WHITE);
    g.fillRect(0, 0, size.width, size.height);

    g.setColor(Color.BLACK);
    if(x>10&&x<110&&y>10&&y<110){
    g.setColor(Color.RED);
    }
    g.drawRect(10, 10, 100, 100);

    g.setColor(Color.BLACK);
    if(x>110&&x<210&&y>110&&y<210){
    g.setColor(Color.RED);
    }
    g.drawRect(110, 110, 100, 100);
    }

    @Override
    public void mouseDragged(MouseEvent e) {
    } @Override
    public void mouseMoved(MouseEvent e) {
    x = e.getX();
    y = e.getY();
    repaint();
    }
    }

    public class WindowListener extends WindowAdapter{
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    }

    public static void main(String[] args){
    CSDN csdn = new CSDN();
    }
    }