【问题标题】:JAVA - Updating A JPanel Every MouseclickJAVA - 每次鼠标点击更新一个 JPanel
【发布时间】: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


【解决方案1】:

无论您的 imageDisplay 是什么类,都必须跟踪所有选定的点以及您想要为它们使用的颜色(可能在某种地图中)。然后在您的 paintComponent() 方法中,您首先调用 super.paintComponent(),然后为每个单击点调用 drawOval()。

【讨论】:

  • imageDisplay 保存 BufferedImage 的 JPanel。
猜你喜欢
  • 1970-01-01
  • 2018-07-30
  • 1970-01-01
  • 2013-11-15
  • 2014-09-29
  • 2020-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多