import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.Graphics;
class Start implements ActionListener{
JFrame ramka;
JButton wLewo;
JButton wPrawo;
JButton Naprzod;
JButton wGore;
JButton wDol;
JButton Clean;
JButton Zamknij;
PanelRysunkowy okienkoR; //okienko do rysowania
class PanelRysunkowy extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponents(g);
}
}
public boolean rysowanie = false;
private int wys=500;
private int szer=500;
private int wspx=240; //poczatkowe polozenie
private int wspy=200;
private int position=0;
//elementy tekstowe
JLabel stanPiora = new JLabel(" Stan piora: Podniesione ");
JLabel polozenieP=new JLabel(" Polozenie: ("+240+","+200+")");
JLabel kierunek = new JLabel(" Kierunek: "+ position);
public void pokazOkno(){
ramka=new JFrame();
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.setSize(szer, wys);
//przyciski
wLewo=new JButton("left");
wPrawo=new JButton("right");
Naprzod=new JButton("forward");
wGore=new JButton("pen up");
wDol=new JButton("pen down");
Clean=new JButton("clean");
Zamknij=new JButton("quit");
wLewo.addActionListener(this);
wPrawo.addActionListener(this);
Naprzod.addActionListener(this);
wGore.addActionListener(this);
wDol.addActionListener(this);
Clean.addActionListener(this);
Zamknij.addActionListener(this);
JPanel jp=new JPanel();
jp.setLayout(new BorderLayout());
okienkoR=new PanelRysunkowy();
JToolBar tb=new JToolBar(); //miejscowka na przyciski
JToolBar tb2=new JToolBar();//na dane tekstowe
//dodaje przyciski na toolbar
tb.add(wLewo);
tb.add(wPrawo);
tb.add(Naprzod);
tb.add(wGore);
tb.add(wDol);
tb.add(Clean);
tb.add(Zamknij);
tb2.add(stanPiora);
tb2.add(polozenieP);
tb2.add(kierunek);
//tb.add(stanPiora);
//ustalam polozenie panelu i toolbara w okienku
jp.add("Center",okienkoR);
jp.add("North",tb);
jp.add("South",tb2);
ramka.add(jp);
ramka.setVisible(true);
}
public void actionPerformed(ActionEvent akcja){
Graphics rysik= okienkoR.getGraphics(); //pobieram z panelu rys obiekt typu graphics ktorego bede uzywal o rysowania
rysik.setColor(Color.BLACK);
if(akcja.getSource()==wDol){
rysowanie = true;
stanPiora.setText(" Stan piora: Opuszczone ");
}
else if(akcja.getSource()==wGore){
rysowanie = false;
stanPiora.setText(" Stan piora: Podniesione ");
}
else if(akcja.getSource()==wLewo){ //dla przycisku left
if(position==0){
position=270;
kierunek.setText(" Kierunek: "+ position);
return; }
else if(position==90){
position=0;
kierunek.setText(" Kierunek: "+ position);
return;
}
else if(position==180){
position=90;
kierunek.setText(" Kierunek: "+ position);
return;
}
else if(position==270){
position=180;
kierunek.setText(" Kierunek: "+ position);
return;
}
}
else if(akcja.getSource()==wPrawo){ //dla przycisku right
if(position==0){
position=90;
kierunek.setText(" Kierunek: "+ position);
return; }
else if(position==90){
position=180;
kierunek.setText(" Kierunek: "+ position);
return;
}
else if(position==180){
position=270;
kierunek.setText(" Kierunek: "+ position);
return;
}
else if(position==270){
position=0;
kierunek.setText(" Kierunek: "+ position);
return;
}
}
else if(akcja.getSource()==Naprzod){
if(position==0){
int y=wspy;
wspy=wspy-10;
if(rysowanie==true){
//for(int i = wspy;i<y;i++){
rysik.drawLine(wspx,wspy,wspx,y);
// }
}
}
if(position==90){
int x=wspx;
wspx+=10;
if(rysowanie==true){
rysik.drawLine(wspx,wspy,x,wspy);
}
}
if(position==180){
int y = wspy;
wspy=wspy+10;
if(rysowanie==true){
rysik.drawLine(wspx,wspy,wspx,y);}
}
if(position==270){
int x=wspx;
wspx-=10;
if(rysowanie==true){
rysik.drawLine(wspx,wspy,x,wspy);
}
}
polozenieP.setText(" Polozenie ("+wspx+","+ wspy +") ");
}
else if(akcja.getSource()==Clean){
rysowanie = false;
position=0;
wspx=240;
wspy=200;
polozenieP.setText(" Polozenie ("+wspx+","+ wspy +") ");
stanPiora.setText(" Stan piora: Podniesione ");
kierunek.setText(" Kierunek: "+ position);
rysik.clearRect(0,0,500,500);//tu czysci okienko
}
else if(akcja.getSource()==Zamknij){
System.exit(0);
}
}
public static void main(String[] args){
Start rysuj=new Start();
rysuj.pokazOkno( );
}
}