jeszcze jedna kwestia bo nie wiem o co chodzi
po uruchomieniu trzeba złapać ramkę i zminimalizować lub zmienić rozmiar wtedy panele się pojawiają - inaczej ramka wygląda jakby była pusta
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.LinkedList;
public class Cw1 {
Rastr rastr;
Wektor wektor;
Menu menu;
JTextField text;
public static void main(String args[]) {
Cw1 cw1 = new Cw1();
cw1.start();
}
public void start() {
JFrame ramka = new JFrame();
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.setLocation(100,100);
ramka.setSize(431,442);
// ramka.setResizable(false);
ramka.setTitle("Ćw. 1");
ramka.setVisible(true);
ramka.setLayout(null);
rastr = new Rastr();
wektor = new Wektor();
menu = new Menu();
ramka.getContentPane().add(rastr);
ramka.getContentPane().add(wektor);
ramka.getContentPane().add(menu);
JLabel e = new JLabel("ćw. 1",JLabel.CENTER);
e.setLocation(0,370);
e.setSize(menu.getWidth(), 30);
ramka.getContentPane().add(e);
}
public class Rastr extends JPanel implements MouseListener {
File fileIn;
File fileOut;
Graphics2D gR;
BufferedImage imageB;
public Rastr() {
this.addMouseListener(this);
this.setBounds(5,5,200,200);
this.setBackground(Color.LIGHT_GRAY);
}
public void wczytaj() {
fileIn = new File(text.getText());
try {
imageB = ImageIO.read(fileIn);
}
catch (IOException e) {
System.out.println("błąd IO in");
}
gR = imageB.createGraphics();
}
public void zapisz() {
fileOut = new File(text.getText());
try {
ImageIO.write(imageB,"jpg",fileOut);
}
catch (IOException e) {
System.out.println("błąd IO out");
}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2D = (Graphics2D)g;
g2D.drawImage(imageB,null,0,0);
}
public void mouseClicked(MouseEvent zdarzenie) {
gR.setColor(Color.BLACK);
gR.drawLine(0,zdarzenie.getY(),this.getWidth(),zdarzenie.getY());
gR.drawLine(zdarzenie.getX(),0,zdarzenie.getX(),this.getHeight());
this.repaint();
}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {}
}
public class Wektor extends JPanel implements MouseListener {
Graphics2D g2D;
int licznik = 0;
LinkedList<Linia> lista = new LinkedList<Linia>();
Linia linia;
public Wektor() {
this.addMouseListener(this);
this.setBounds(210,5,200,200);
this.setBackground(Color.LIGHT_GRAY);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g2D = (Graphics2D)g;
g2D.setStroke(new BasicStroke(5));
g2D.setColor(Color.BLACK);
for(int i=0; i<lista.size(); i++) {
linia = (Linia)lista.get(i);
g2D.drawLine(linia.getX1(),linia.getY1(),linia.getX2(),linia.getY2());
}
if(licznik%2 != 0) {
g2D.setXORMode(Color.white);
g2D.setPaint(Color.black);
g2D.fillOval((this.getWidth()/4),(this.getHeight()/4),(this.getWidth()/2),(this.getHeight()/2));
}
}
public void mouseClicked(MouseEvent arg0) {
lista.add(new Linia((this.getWidth()/2),0,(this.getWidth()/2),this.getHeight()));
lista.add(new Linia(0,(this.getHeight()/2),this.getWidth(),(this.getHeight()/2)));
this.repaint();
}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {}
}
public class Linia {
int x1,y1,x2,y2;
public Linia(int x1,int y1,int x2,int y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
public int getX1() { return x1; }
public int getY1() { return y1; }
public int getX2() { return x2; }
public int getY2() { return y2; }
}
public class Menu extends JPanel implements ActionListener {
JButton wczytaj;
JButton zapisz;
JButton usunR;
JButton rysuj;
JButton kolo;
JButton usunW;
JLabel etykieta;
public Menu() {
this.setLayout(new GridLayout(4,2,5,5));
// this.setBounds(5,220,405,160);
this.setLocation(5,210);
this.setSize(405,160);
wczytaj = new JButton("Wczytaj");
zapisz = new JButton("Zapisz");
usunR = new JButton("Usuń");
rysuj = new JButton("Rysuj");
kolo = new JButton("Koło");
usunW = new JButton("Usuń");
text = new JTextField("foto.jpg");
etykieta = new JLabel("ścieżka do pliku");
zapisz.addActionListener(this);
wczytaj.addActionListener(this);
usunR.addActionListener(this);
rysuj.addActionListener(this);
kolo.addActionListener(this);
usunW.addActionListener(this);
this.add(wczytaj);
this.add(rysuj);
this.add(zapisz);
this.add(kolo);
this.add(usunR);
this.add(usunW);
this.add(text);
this.add(etykieta);
}
public void actionPerformed(ActionEvent zdarzenie) {
Object e = zdarzenie.getSource();
if(e == wczytaj) {
rastr.wczytaj();
rastr.repaint();
}
if(e == zapisz) {
rastr.zapisz();
}
if(e == usunR) {
rastr.imageB = null;
text.setText("");
rastr.repaint();
}
if(e == rysuj) {
if(wektor.lista.isEmpty()) {
wektor.lista.add(new Linia((wektor.getWidth()/2),0,(wektor.getWidth()/2),wektor.getHeight()));
wektor.lista.add(new Linia(0,(wektor.getHeight()/2),wektor.getWidth(),(wektor.getHeight()/2)));
wektor.repaint();
}
}
if(e == kolo) {
wektor.licznik++;
wektor.repaint();
}
if(e == usunW) {
wektor.lista.clear();
wektor.licznik = 0;
wektor.repaint();
}
}
}
}