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