Przesyłam poprawiony kod, który u mnie działa:
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URL;
import javax.imageio.*;
import javax.swing.*;
class TicTacToe
{
JPanel Plansza;
JFrame ramka;
Image nic;
BufferedImage kolko;
BufferedImage krzyzyk;
BufferedImage mkolko;
BufferedImage mkrzyzyk;
Pole pola;
class Pole extends JPanel
{
String stan;
public void paintComponent(Graphics g)
{
//instrukcje warunkowe sprawdzające stan pola // w zaleznosci od stanu będą rysowane inne zdjecia
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(nic, 0, 0, this);
}
}
//Klasa jest wewnętrzna poniewaz musi ona korzystać ze składowych wystepujacych w klasie TicTacToe
public static void main(String[] args)
{
TicTacToe kik = new TicTacToe();
kik.przygotuj_zdjecia();
kik.do_dziela();
}
public void przygotuj_zdjecia()
{
Plansza = new JPanel();
//Ustawienie innego Layoutu niż doomyślny (FlowLayout) pomaga
Plansza.setLayout(new BorderLayout());
/*
File Fnic = new File("nic.bmp");
try
{
nic = ImageIO.read(Fnic);
}
catch(IOException x){;}
*/
//Miałem także tutaj problemy z uzyskaniem obrazka, u mnie zadziałała opcja wykorzystująca obiekt URL:
try
{
URL Fnic = new URL("file:///C:/pictures/picture.jpg");
nic = ImageIO.read(Fnic);
}
catch(IOException x){
x.printStackTrace();
}
//A i co do klauzuli catch to warto przynajmniej wypisać w niej stos wywowłań (jak niżej), przynajmniej wiesz, że coś nie działa. I wiesz gdzie szukać.
File Fkolko = new File("o.bmp");
try
{
kolko = ImageIO.read(Fkolko);
}
catch(IOException x){;}
File Fkrzyzyk = new File("x.bmp");
try
{
krzyzyk = ImageIO.read(Fkrzyzyk);
}
catch(IOException x){;}
File Fmkolko = new File("osmall");
try
{
mkolko = ImageIO.read(Fmkolko);
}
catch(IOException x){;}
File Fmkrzyzyk = new File("xsmall");
try
{
mkrzyzyk = ImageIO.read(Fmkrzyzyk);
}
catch(IOException x){;}
}
public void do_dziela()
{
Plansza.add(new Pole());
ramka = new JFrame("TicTacToe");
ramka.setSize(500,500);
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.getContentPane().add(Plansza);
ramka.setVisible(true);
}
}
W komentarzach zawarłem wskazówki.
Pozdrawiam :)