Rysowanie po Panelu-problem z przyciskami

0

Witam.
Poniższy kod ma na celu malowanie przy włączonym pędzlu i mazanie przy włączonej gumce. Jednakże, gdy włączę przycisk i zacznę malować, obraz przycisku pojawia się również w lewym górnym narożniku. Jak temu zapobiec?

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
 
public class C extends JPanel implements ActionListener,MouseMotionListener 
{
    public int x, y,wybor;
    JButton pedzel,gumka;
    public C()
    {
    	ImageIcon ii=new ImageIcon("d:/pedzel.png");
		setLayout(null);
		pedzel=new JButton(ii);
		pedzel.setBounds(400,5,100,54);
		pedzel.addActionListener(this);
		add(pedzel);
		
		ii=new ImageIcon("d:/gumka.png");
		gumka=new JButton(ii);
		gumka.setBounds(400,70,100,100);
		gumka.addActionListener(this);
		add(gumka);
		addMouseMotionListener(this);
    }
 
    public void paintComponent(Graphics g) {
    	
        Graphics2D g2d = (Graphics2D) g; 
 if(wybor==1)
 {
        g2d.setColor(Color.BLUE);
        g2d.fillOval(x, y, 20,20);
 }
 if(wybor==2)
 {
        g2d.setColor(getBackground());
        g2d.fillOval(x, y, 20,20);
 }
    }
	public void mouseDragged(MouseEvent e) {
	x = e.getX();
        y = e.getY();
        repaint();	
	}
	public void mouseMoved(MouseEvent e) {	
	}
	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource()==pedzel)
		{
			wybor=1;
		}
		if(e.getSource()==gumka)
		{
			wybor=2;
		}
	}
}

A tu moja ramka

 import javax.swing.JFrame;
import javax.swing.JPanel;


public class Ramka extends JFrame
{
C j=new C();
	public Ramka()
	{
		add(j);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		setSize(600,500);
	}
	public static void main(String[] args) {
		new Ramka();

	}

}
0

Spróbuj może z innym layout managerem, a tak poza tym to średni pomysł malować na tym samym komponencie w którym są inne komponenty.

0

Problem rozwiązany. Wystarczyło użyć BufferedImage do malowania. Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1