0

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);
}

UI

(R,G,B) および x,y ピクセル位置

期待される結果:すべてが正常に機能しています。ユーザー インターフェイスに RGB 値を出力するのに苦労しているだけです。と を使ってみRepaint()ましRevalidate()た。

どんな助けでも大歓迎です

4

1 に答える 1

0

imageDisplay がどのクラスであっても、選択したすべてのポイントとそれらに使用する色を追跡する必要があります (おそらく何らかのマップで)。次に、paintComponent() メソッドで、最初に super.paintComponent() を呼び出し、次にクリックされたポイントごとに drawOval() を呼び出します。

于 2016-02-24T16:42:26.003 に答える