import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class Indikaator extends JPanel implements MouseListener{ double protsent; java.util.List kuularid=new LinkedList(); IndikaatoriSuunad suund; public Indikaator(double protsent){ this(protsent, IndikaatoriSuunad.ALLA); } public Indikaator(double protsent, IndikaatoriSuunad suund){ this.protsent=protsent; this.suund=suund; addMouseListener(this); } public void lisaProtsendiKuular(ProtsendiKuular p){ kuularid.add(p); } void teavitaProtsendiMuutusest(){ for(Iterator it=kuularid.iterator(); it.hasNext();){ ProtsendiKuular k=it.next(); k.protsentMuutus(this, protsent); } } public void muudaProtsent(double uusprotsent){ this.protsent=uusprotsent; teavitaProtsendiMuutusest(); repaint(); } public void mousePressed(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseClicked(MouseEvent e){ //Pange hiirevajutust ka arvestama vastavalt suunale if(suund==IndikaatoriSuunad.ALLA){ this.muudaProtsent(100*e.getY()/getHeight()); } if(suund==IndikaatoriSuunad.PAREMALE){ this.muudaProtsent(100*e.getX()/getWidth()); } if(suund==IndikaatoriSuunad.YLES){ this.muudaProtsent(100*(getHeight()-e.getY())/getHeight()); } if(suund==IndikaatoriSuunad.VASAKULE){ this.muudaProtsent(100*(getWidth()-e.getX())/getWidth()); } } public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void paintComponent(Graphics g){ super.paintComponent(g); if(suund==IndikaatoriSuunad.ALLA){ g.fillRect(0, 0, getWidth(), (int)(protsent/100*getHeight())); } if(suund==IndikaatoriSuunad.PAREMALE){ g.fillRect(0, 0, (int)(protsent/100*getWidth()), getHeight()); } if(suund==IndikaatoriSuunad.YLES){ g.fillRect(0, getHeight()-(int)(protsent/100*getHeight()), getWidth(), (int)(protsent/100*getHeight())); } if(suund==IndikaatoriSuunad.VASAKULE){ g.fillRect(getWidth()-(int)(protsent/100*getWidth()), 0, (int)(protsent/100*getWidth()), getHeight()); } } }