【发布时间】:2016-02-24 16:23:10
【问题描述】:
JPanel 未按预期更新
每次单击我的应用程序上的图像时,我希望界面右侧(底部)的面板刷新该特定位置的 RGB 值。
- 我知道它正在获取值,正如您在控制台中看到的那样,它打印了像素 1 和 2 的值和位置。
当鼠标被点击时,它会这样做:
image_Display.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
x1 = x2;
y1 = y2;
colour1 = colour2;
x2 = e.getX();
y2 = e.getY();
colour2 = originalpixelValue(x2, y2);
//RGBValue pixelValue = originalpixelValue(x2, y2);
System.out.println(colour2.toString());
String pixel1 = x2 + ", " + y2;
//String pixel2 = previousX + ", " + previousY;
System.out.println("Pixel 1: " + pixel1);
System.out.println("\n");
Toolbar.repaint();
repaint();
}
}
绘制方法:
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
g2.setStroke(new BasicStroke(3));
Random r = new Random();
g2.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));
g2.drawOval(x1, y1, 10, 10);
g2.drawOval(x2, y2, 10, 10);
}
预期结果:一切正常,我只是在努力将 RGB 值打印到用户界面。我尝试过使用Repaint() 和Revalidate()。
任何帮助将不胜感激
【问题讨论】:
-
使用 colour2 决定绘制什么的代码在哪里?
-
不要覆盖paint()。改为覆盖paintComponent()。
-
@FredK 覆盖
paintComponent()完全破坏了 UI。 -
@JPMoresmau 我将 colour2 附加到标签上。
pixel_Filtered2.setText(colour2.toString()); -
为什么我们在 mouseClicked 中看不到该代码?那个代码在哪里?什么时候运行?我认为这是问题所在,您没有在文本框中看到颜色?
标签: java jpanel panel mouselistener onmouseclick