Witam
Moje problemy:
*Gdy włączam program pomimo wprowadzenia zmiennej typu boolean pokazuje się kółko.
*Gdy naciskam lewy przycisk myszy prawidłowo pokazują się kółka, przy pojawianiu się nowych tylko tak jakby migają szybko i można dostrzec "w nich" krzyżyki
*Po naciśnięciu prawego przycisku pojawiają się krzyżyki ale za chwilę znikają na miejsce kołek
package pakiet1;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.net.URL;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class KolkoKrzyzyk extends Canvas implements MouseListener {
public static final int SZEROKOSC = 400;
public static final int WYSOKOSC = 400;
public static final Color ab = new Color(255, 255, 255);
private int x, y, x1, y1;
public BufferedImage krzyzyk, kolko;
boolean rysowanie =true;
public KolkoKrzyzyk() {
addMouseListener(this);
JFrame okno = new JFrame("Kółko i krzyżyk");
JPanel panel = (JPanel) okno.getContentPane();
setBounds(0, 0, SZEROKOSC, WYSOKOSC);
panel.setBackground(ab);
panel.setPreferredSize(new Dimension(SZEROKOSC, WYSOKOSC));
panel.setLayout(null);
panel.add(this);
okno.setBounds(0, 0, SZEROKOSC, WYSOKOSC);
okno.setVisible(true);
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public BufferedImage loadImage(String sciezka) {
try {
URL url = getClass().getClassLoader().getResource(sciezka);
return ImageIO.read(url);
} catch (Exception e) {
System.out.println("Jest coś źle");
return null;
}
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
repaint();
x = e.getX();
y = e.getY();
x1 = e.getX();
y1 = e.getY();
punkty.add(new Point(x, y));
punkty1.add(new Point(x1, y1));
if (e.getButton() == MouseEvent.BUTTON1) {
rysowanie = true;
}
if (e.getButton() == MouseEvent.BUTTON3) {
rysowanie = false;
}
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
ArrayList<Point> punkty = new ArrayList<Point>();
ArrayList<Point> punkty1 = new ArrayList<Point>();
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
rysujKrzyzyki(g2d);
Graphics2D abc = (Graphics2D) g;
rysujKoła(abc);
if (rysowanie == true) {
kolko = loadImage("img/kolko.gif");
g.drawImage(kolko, x1, y1, this);
} else {
krzyzyk = loadImage("img/krzyzyk.gif");
g.drawImage(krzyzyk, x, y, this);
}
}
private void rysujKrzyzyki(Graphics2D g2d) {
for (Point a : punkty) {
int x = (int) a.getX();
int y = (int) a.getY();
g2d.drawImage(krzyzyk, x, y, this);
}
}
private void rysujKoła(Graphics2D abc){
for(Point b : punkty1){
int x1 = (int) b.getX();
int y1 = (int) b.getY();
abc.drawImage(kolko, x1, y1, this);
}
}
public static void main(String[] args) {
KolkoKrzyzyk inv = new KolkoKrzyzyk();
}
}