Witam wszystkich,
mam pewien problem, którego nie potrafię rozwiązać, właściwie nie bardzo nawet wiem jak go precyzyjnie nazwać, pewnie dla wielu to dość trywialne, ale proszę o wyrozumiałość, jestem bardzo początkującym użytkownikiem Javy.
Do rzeczy, Zdefiniowałem okienko i chcę w nim wygenerować tablicę (jednokolorową szachownicę) z kwadratami - to działa, następnie chcę dynamicznie zmieniać kolory dowolnych kwadratów - i to nie działa (w poniższym przykładzie próbuję narysować jeden kwadrat na współrzędnych wartosc_X i wartosc_Y, co robię źle, albo jak to zrobić żeby działało ? Z góry dziękuję za pomoc.
// MainWindow.java
import java.util.Scanner;
import javax.swing.JFrame;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
public class MainWindow {
JFrame frame = new JFrame();
int wartosc_X;
int wartosc_Y;
// constructor for frame
public MainWindow (String title) {
frame.setSize(1000, 1000);
frame.setTitle(title);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i=0;i<26;i++){ // to dziala ok.
for (int j=0;j<26;j++){
Shape shape = new Shape (110+i*20,110+j*20,19,19,5,100,220);
frame.add(shape);
frame.setVisible(true); }}
wartosc_X= 15;
wartosc_Y = 15;
Shape shape = new Shape (110+wartosc_X*20,110+wartosc_Y*20,19,19,250,0,20); // to juz nie dziala, nie wiem dlaczego
frame.add(shape);
frame.setVisible(true);
}
public static void main(String[] args){
new MainWindow("OKIENKO BAKTERII");
}
}
// Shape.java
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Color;
import java.awt.Color.*;
import javax.swing.JComponent;
public class Shape extends JComponent{
int width, height, xcoord, ycoord, kol_r, kol_g,kol_b;
//constructor
public Shape (int x, int y ,int w,int h, int k, int l, int m)
{
this.width = w;
this.height = h;
this.xcoord = x;
this.ycoord = y;
this.kol_r = k;
this.kol_g = l;
this.kol_b = m;
}
public void paintComponent(Graphics g){
Graphics2D g2d = (Graphics2D) g;
Color x= new Color( kol_r,kol_g, kol_b );
g.setColor(x);
g.fillRect(xcoord, ycoord, width, height);
}
}