1. 一个panel上面画了几幅画
2. 我得到了那几幅画的最大和最小坐标(并用蓝色的矩形框把其圈住)
3. 《未实现》当鼠标经过某个矩形区域时,巨型框变成红色,离开再换回到蓝色。本人的疑惑:
我实现2的时候,用的是1.panel的Graphics去画框,同理3也用的是1.panel的Graphics去重画框
以至于实现3的时候总是要重画1的那几幅图片
怎样可以实现只画矩形框。
2. 我得到了那几幅画的最大和最小坐标(并用蓝色的矩形框把其圈住)
3. 《未实现》当鼠标经过某个矩形区域时,巨型框变成红色,离开再换回到蓝色。本人的疑惑:
我实现2的时候,用的是1.panel的Graphics去画框,同理3也用的是1.panel的Graphics去重画框
以至于实现3的时候总是要重画1的那几幅图片
怎样可以实现只画矩形框。
呵呵
import java.awt.*;
import java.awt.image.*;public class MyFrame extends JFrame { private static final Image image = Toolkit.getDefaultToolkit().getImage("C:\\车牌.jpg");
JPanel p, p1;
Graphics gp1; public MyFrame() {
this.setSize(800, 600);
p = new MyPanel(image);
p1 = new MyPanel();
p1.setBounds(0, 0, 800, 600);
p.setBounds(0, 0, 800, 600);
p1.setOpaque(false);
p1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseMoved(java.awt.event.MouseEvent evt) {
p1MouseMoved(evt);
}
});
add(p);
add(p1);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
} private void p1MouseMoved(java.awt.event.MouseEvent evt) {
gp1 = p1.getGraphics();
p1.paintImmediately(0, 0, 800, 600);
gp1.setColor(new Color(1f, 0f, 0f, 1f));
gp1.drawRect(evt.getX(), evt.getY(), 100, 100);
} public static void main(String[] args) {
MyFrame frame = new MyFrame();
}
}class MyPanel extends JPanel { private Image image = null; public MyPanel(Image image) {
super();
this.image = image;
} public MyPanel() {
super();
} protected void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), this);
}
}
测试应该没有什么问题