您好,我正在尝试获取 JFrame 上特定像素的颜色。
这是我的代码。我的镜框是红色的。
我遇到的问题是,当我单击框架时,它应该返回红色的 RGB 颜色,即 (255,0,0),但是当我单击不同的点时,有时会得到白色的 RGB 颜色 (255,255,255)我的代码有问题吗?
public class guiTest extends JFrame
{
private static Shape ellipse;
private static Robot rb;
public guiTest()
{
super("4-connected approach");
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setSize(800,800);
this.getContentPane().setBackground(Color.red);
setLocationRelativeTo(null);
addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("Pixel:"+e.getX()+","+e.getY());
try {
System.out.println(getPixel(e.getX(),e.getY()));
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
});
}
public static Color getPixel(int x,int y) throws AWTException{
Robot rb=new Robot();
return rb.getPixelColor(x, y);
}
public static void main(String[] args){
guiTest frame=new guiTest();
}
问题是你获取坐标的方式 -e.getX()
and e.getY()
-,因为它们是相对于JFrame
(JFrame 的左上角为 (0,0))。
要获取像素的坐标,请使用:
public void mouseClicked(MouseEvent e) {
Point p = e.getLocationOnScreen();
System.out.println("Pixel:" + p.x + "," + p.y);
try {
System.out.println(getPixel(p.x, p.y));
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
[额外]阅读本文以改进其他事情:当我运行这个小鼠标钩子应用程序时,为什么我的鼠标出现滞后?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)