Witam.
Mam od kilku dni problem odnośnie pewnej kwestii. Poniżej kod:
package TGTA;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TGTA extends JFrame implements MouseMotionListener, ActionListener
{
private static final long serialVersionUID = 1L;
public int Wejscie[];
public int Wyjscie[];
public int x, y;
public JButton wczytaj;
public JPanel panel;
public JPanel panelRysowania;
public SiecNeuronowa siec;
public BufferedImage obszarRysowania;
public TGTA() throws Exception
{
utworzOkno(640,480);
utworzPanel();
utworzPoleRysowania(300,300);
utworzSiec();
utworzPrzyciski();
}
public void utworzOkno(int x, int y)
{
Dimension rozmiar_ekranu = Toolkit.getDefaultToolkit().getScreenSize();
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLocation(rozmiar_ekranu.width/4,rozmiar_ekranu.height/4);
this.setTitle("Projekt IO");
this.setSize(x,y);
this.setResizable(false);
this.setLayout(null);
}
public void utworzPoleRysowania(int x, int y)
{
panelRysowania = new JPanel();
panelRysowania.setBounds(0, 0, x, y);
obszarRysowania = new BufferedImage(x, y, BufferedImage.TYPE_INT_ARGB);
Graphics2D obszar = obszarRysowania.createGraphics();
obszar.setColor(Color.GREEN);
obszar.fillRect(0, 0, 100, 100);
obszar.setBackground(Color.WHITE);
panelRysowania.paint(obszar);
panel.add(panelRysowania);
}
public void utworzPanel()
{
panel = (JPanel) getContentPane();
panel.setLayout(null);
}
public void utworzPrzyciski()
{
wczytaj = new JButton("wczytaj");
wczytaj.setBounds(400, 400, 100, 30);
wczytaj.addActionListener(this);
panel.add(wczytaj);
}
public void pobierzDaneDlaSieci()
{
/*int szerokoscPanelu = zawartoscPolaRysowania.getWidth();
int wysokoscPanelu = zawartoscPolaRysowania.getHeight();
Wejscie = new int[szerokoscPanelu*wysokoscPanelu];
for (int wiersz = 0; wiersz < wysokoscPanelu; wiersz++)
{
for (int kolumna = 0; kolumna < szerokoscPanelu; kolumna++)
{
Wejscie[wiersz*kolumna] = zawartoscPolaRysowania.getRGB(kolumna, wiersz);
}
}
*/
}
/*public static int[] wczytajPiksele(BufferedImage zawartoscPanelu)
{
int szerokoscPanelu = zawartoscPanelu.getWidth();
int wysokoscPanelu = zawartoscPanelu.getHeight();
int[] tablicaPikseli = new int[szerokoscPanelu*wysokoscPanelu];
for (int wiersz = 0; wiersz < wysokoscPanelu; wiersz++)
{
for (int kolumna = 0; kolumna < szerokoscPanelu; kolumna++)
{
tablicaPikseli[wiersz*kolumna] = zawartoscPanelu.getRGB(kolumna, wiersz);
}
}
return tablicaPikseli;
}
*/
public void utworzSiec() throws Exception
{
siec = new SiecNeuronowa(90000, 8, 10, 1, new KrzywaLogistyczna());
}
public void ustawDaneSieci()
{
}
public void rozpocznijNauczanieSieci() throws Exception
{
siec.LosujWagi(0.0, 1.0);
//siec.UczSiec(Wyjscie, Wejscie, 0.1);
}
public void mouseDragged(MouseEvent arg0)
{
Object obiekt = arg0.getSource();
/*if (obiekt == )
{
x =
}
*/
}
public void mouseMoved(MouseEvent arg0)
{
}
public void actionPerformed(ActionEvent arg0)
{
Object obiekt = arg0.getSource();
if (obiekt == wczytaj)
{
pobierzDaneDlaSieci();
}
}
public static void main(String[] args) throws Exception
{
TGTA tgta = new TGTA();
tgta.setVisible(true);
}
}
Ogólnie jest to prosty projekt z sieci MLP wraz z EBP. Sieć sama działa prawidłowo bo testowałem na prostym przykładzie. Chcę mieć możliwość rysowania na BufferedImage. Znalazłem w sieci, że w ten sposób który jest w metodzie utworzPoleRysowania pozwala na bezpośrednie rysowanie w BufferedImage. Problem w tym, że nie potrafię uczynić tego widocznym i rysować na tym myszą. Męczę się już kilka dni nad tym, a chciałbym mieć to za sobą bo bardzo jestem ciekaw jak się będzie sprawować sieć przy bieżących ustawionych parametrach. Bardzo proszę o pomoc lub skierowanie na odpowiedni temat/treść (szukałem, ale chyba słabo mi poszło).
Pozdrawiam.