【发布时间】:2011-05-08 13:54:44
【问题描述】:
当我将鼠标悬停在照片的一个位置时,如何识别颜色?
BufferedImage image = new BufferedImage("blueball.jpg");
Project() {
jFrame.setSize(new Dimension(500, 320));
jFrame.getContentPane().setLayout(null);
colorLabelText.setBounds(new Rectangle(310, 210, 50, 30));
colorLabelText.setText("Color :");
colorLabel.setBounds(new Rectangle(370, 210, 100, 30));
photoLabel.setBounds(new Rectangle(20, 20, 220, 250));
photoLabel.addMouseListener(new RecognizeColorActionListener());
jFrame.getContentPane().add(photoLabel);
jFrame.getContentPane().add(colorLabelText);
jFrame.getContentPane().add(colorLabel);
jFrame.setVisible(true);
}
class RecognizeColorActionListener implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();
int imgx = image.getMinX();
int imgy = image.getMinY();
int c = image.getRGB(x - imgx, y - imgy);
发生错误 java.lang.ArrayIndexOutOfBoundsException: 坐标超出范围!
【问题讨论】:
-
你如何展示你的图片?
-
我将它显示在一个标签中,标签位置是 photoLabel.setBounds(new Rectangle(20, 20, 220, 250));
-
它是否曾经工作过,例如在左上角?您是否从 photoLabel 的左上角绘制图像? image.getWidth(), image.getHeight() 给你什么?
-
找不到以文件名为参数的 java.awt.image.BufferedImage 的构造函数,是不是看错了类?
-
如果使用 getWidth 和 getHeight 给照片的宽度和高度 250 200,我将标签移动到左上角也会出错。协调员越界,顺便说一句,谢谢我用机器人解决了。