Forum » Programiranje » [NALOGA][Java] Težave pri pisanju slikarja
[NALOGA][Java] Težave pri pisanju slikarja
SkIDiver ::
Pišem program za vaje na faxu pa imam več težav. Trenutno pa me bega le ena. In sicer zakaj mi preskoči klic metode run(); v konstruktorju?
package Painter; import java.awt.*; import java.text.*; import java.util.*; import javax.swing.*; public class TimePanel extends JPanel { private JLabel timeLabel = new JLabel("Time"); private Font fontStyle = new Font("Arial",Font.PLAIN,14); public TimePanel() { this.setLayout(new FlowLayout(FlowLayout.RIGHT)); this.setBorder(BorderFactory.createBevelBorder(1)); this.add(timeLabel); clock(); //Tole mi preskoč in sploh ne upošteva klica } public void clock() { Thread timeThread = new Thread(); timeThread.start(); } public void run() { try { for(int i=0; i>=0; i++) { SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss"); Date today = new Date(); String output = time.format(today); timeLabel.setText(output); timeLabel.setFont(fontStyle); } } catch(Exception e) { System.out.println("Error: "+e.getMessage()); } } }
OwcA ::
Saj vem, da je očitno, ampak kličeš clock(), ne run().
P.S. neskončna zanka je prav ogabna, uporabi raje while (true)
P.S. neskončna zanka je prav ogabna, uporabi raje while (true)
Otroška radovednost - gonilo napredka.
SkIDiver ::
Moja napaka. Ne kliče motede clock(); oz ne upošteva klica metode clock(); v konstruktorju. Prebere ga vendar takoj, ko prebere klic metode in zatem zaviti zaklepaj konča branje v tem razredu.
Glede neskončne zanke se strinjam. Sem imel z while vendar, ker mi tole ni jasno zakaj ne kliče metode sem spremenil v for preden sem šel pogledat v debugerja kaj je narobe.
Glede neskončne zanke se strinjam. Sem imel z while vendar, ker mi tole ni jasno zakaj ne kliče metode sem spremenil v for preden sem šel pogledat v debugerja kaj je narobe.
kopernik ::
Ti zaganjaš tisti thread kar v prazno. Poskusi takole (mogoče je kakšna sintaktična napaka, preveri):
public void clock() { Thread timeThread = new Thread(new Runnable() { public void run() { try { for(int i=0; i>=0; i++) { SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss"); Date today = new Date(); String output = time.format(today); timeLabel.setText(output); timeLabel.setFont(fontStyle); } } catch(Exception e) { System.out.println("Error: "+e.getMessage()); } } }); timeThread.start(); }
SkIDiver ::
Zanimivo. koprenik tvoja zadeva deluje napaka moje mi pa še kr ni jasna. Bom poskušal kasneje ugotovit v čem je težava in naredit sam, ker tvojega izdelka ravno ne razumem to pa tud ni OK zame.
Zdej se grem pa posvečat risanju. Če mi ne bo šlo
Zdej se grem pa posvečat risanju. Če mi ne bo šlo
kopernik ::
Na kratko, tvoj thread se ne zaveda, da mora kaj narediti. To mu je potrebno povedati. Obstajata dva načina, in sicer :
1. razširiš razred Thread in povoziš njegovo metodo run() ... class MyThread extends Thread ...
2. implementiraš vmesnik Runnable in njegovo instanco poturiš Threadu ... class MyThread implements Runnable...
Rešitev, ki sem ti jo podal, ustreza drugi točki s to razliko,da nisem šel posebej definirati novega razreda, temveč sem kar uporabil notranji razred (inner class).
Druga varianta (uporaba vmesnika Runnable) je zaradi različnih razlogov bolj priporočljiva.
1. razširiš razred Thread in povoziš njegovo metodo run() ... class MyThread extends Thread ...
2. implementiraš vmesnik Runnable in njegovo instanco poturiš Threadu ... class MyThread implements Runnable...
Rešitev, ki sem ti jo podal, ustreza drugi točki s to razliko,da nisem šel posebej definirati novega razreda, temveč sem kar uporabil notranji razred (inner class).
Druga varianta (uporaba vmesnika Runnable) je zaradi različnih razlogov bolj priporočljiva.
flush ::
Druga varianta (uporaba vmesnika Runnable) je zaradi različnih razlogov bolj priporočljiva.
Kateri pa so ti razlogi?
Noovo - Social Discovery Engine
http://www.noovo.com
http://www.noovo.com
kopernik ::
Ja, obstajajo določeni principi pri programiranju, ki jih je dobro upoštevati. Eden osnovnih je ta, da je dobro imeti razred čimbolj fleksibilen. Uporaba vmesnikov je dosti bolj fleksibilna kot extendanje razredov. Pravzaprav nekateri pravijo, da programerji bistveno preveč uporabljajo tehniko extendanja in s tem povzročijo togost svojega programa. Togost za spremembe. Na netu imaš polno tega, razne teorije o objektnem programiranju.
Dva, že skoraj aksioma :-) glede razširjanja :
"Favor composition over inheritance." - Predvsem zaradi že zgoraj omenjene togosti sistema. Z razširjanjem in abstraktnimi razredi vzpostavljaš neke (dokaj močne) odvisnosti, ki se upirajo spremembam.
"Classes should not be subclassed unless the programmer intends on modifying or enhancing the fundamental behavior of the class." - Pri Threadu v bistvu povoziš (skoraj) prazno metodo run() in hkrati pridobiš vse lastnosti in aktivnosti razreda Thread, kar niti ni tako super :-)
Dva, že skoraj aksioma :-) glede razširjanja :
"Favor composition over inheritance." - Predvsem zaradi že zgoraj omenjene togosti sistema. Z razširjanjem in abstraktnimi razredi vzpostavljaš neke (dokaj močne) odvisnosti, ki se upirajo spremembam.
"Classes should not be subclassed unless the programmer intends on modifying or enhancing the fundamental behavior of the class." - Pri Threadu v bistvu povoziš (skoraj) prazno metodo run() in hkrati pridobiš vse lastnosti in aktivnosti razreda Thread, kar niti ni tako super :-)
l0g1t3ch ::
kako za vraga na tem forumu napišem/prilepim programsko kodo ? Kje so kaki po*anni tagi za to ?
Ko bom to zvedu mam pa en vprašanje tak d ne brisat posta brezveze hvala
Ko bom to zvedu mam pa en vprašanje tak d ne brisat posta brezveze hvala
l0g1t3ch ::
Evo jest mam tud slikarja narjenga in navidez čist lepo dela ampak ga jebe visok CPU usage. Ob risanju črte mi nabija tud 100% poleg tega pa še v cmd javlja napako da mu je zmankal rama. Sicer sistem ni lih najjači ampak celeron 1,7 pa 256 bi pa ja mogl bit dost za enga slikarja
Tak d če se komu da pogledat kodo pa povedat kaj delam narobe pa dobrodošle so vsakršne kritike in nasveti kako izboljšat programiranje ker sm še precej začetnik u javi.
Tak d če se komu da pogledat kodo pa povedat kaj delam narobe pa dobrodošle so vsakršne kritike in nasveti kako izboljšat programiranje ker sm še precej začetnik u javi.
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Naloga8 //main funkcija { public static void main(String[] args) { Okno o = new Okno(32); //kreiramo objekt razreda okno o.setVisible(true); //prikažemo okno } } class Okno extends JFrame implements ActionListener { //deklaracija spremenljivk RisalnaPovrsina RisList; JButton rdeca, modra, rumena, zelena, oranzna, crna; JMenuItem razveljavi; JMenuItem uveljavi; //konstruktor public Okno(int steviloRaz) { setTitle("Slikar 1.0"); //naslov setDefaultCloseOperation(Okno.EXIT_ON_CLOSE); //metoda, ki konča program Container vsebina = getContentPane(); //kontajner, na katerega "lepimo" gumbe,... vsebina.setLayout(null); //sami bomo razporejevali stvari setExtendedState(Okno.MAXIMIZED_BOTH); //okno programa bo zavzelo velikost zaslona setBackground(Color.white); //nastavimo barvo ozadja //gumbi in določanje njihovih barv ter poslušalcev rdeca =new JButton(); rdeca.setBackground(Color.red); rdeca.addActionListener(this); rdeca.setBounds(0,10,50,30); modra =new JButton(); modra.setBackground(Color.blue); modra.addActionListener(this); modra.setBounds(50,10,50,30); rumena =new JButton(); rumena.setBackground(Color.yellow); rumena.addActionListener(this); rumena.setBounds(0,40,50,30); zelena =new JButton(); zelena.setBackground(Color.green); zelena.addActionListener(this); zelena.setBounds(50,40,50,30); oranzna =new JButton(); oranzna.setBackground(Color.orange); oranzna.addActionListener(this); oranzna.setBounds(0,70,50,30); crna =new JButton(); crna.setBackground(Color.black); crna.addActionListener(this); crna.setBounds(50,70,50,30); //dodajanje gumbov na conteiner vsebina.add(rdeca); vsebina.add(modra); vsebina.add(rumena); vsebina.add(zelena); vsebina.add(oranzna); vsebina.add(crna); //meni vrstica JMenuBar menu = new JMenuBar(); JMenu podMenu = new JMenu("Orodja"); razveljavi = new JMenuItem("Razveljavi"); razveljavi.addActionListener(this); uveljavi = new JMenuItem("Uveljavi"); uveljavi.addActionListener(this); razveljavi.setActionCommand("Razveljavi"); //Sets the command name of the action event that is fired by this menu item. razveljavi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,ActionEvent.CTRL_MASK)); uveljavi.setActionCommand("Uvelajvi"); uveljavi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,ActionEvent.CTRL_MASK)); podMenu.add(razveljavi); podMenu.add(uveljavi); menu.add(podMenu); setJMenuBar(menu); /* setAccelerator - nastavi kombinacijo tipk katerih pritisk prestreže poslusalec od JMenuItem KeyStroke.getKeyStroke - razred.metoda ugotovi ali sta pritisnjena gumba ctrl in z KeyEvent.VK_Z dogodek, ki kaze, da se je zgodil pritisk na doloceno tipko v nasem primeru na Z ActionEvent.CTRL_MASK Preveri ce v casu dogodka drzimo stisnjeno tipko ctrl */ //dodamo ploščo, na katero bomo risali, določimo velikost plošče RisList = new RisalnaPovrsina(steviloRaz); RisList.setDoubleBuffered(true); // nastavimo, da je povrsina double buffered RisList.setBounds(110, 10, 800, 600); //velikost ploskve,pozicija RisList.addMouseListener(RisList); RisList.addMouseMotionListener(RisList); vsebina.add(RisList); } //poslušalec - kaj izvršiti ob dogodku -actionlistener public void actionPerformed(ActionEvent e) { if(e.getSource() == rdeca) RisList.barvice = Color.red; else if(e.getSource() == rumena) RisList.barvice = Color.yellow; else if(e.getSource() == modra) RisList.barvice = Color.blue; else if(e.getSource() == zelena) RisList.barvice = Color.green; else if(e.getSource() == oranzna) RisList.barvice = Color.orange; else if(e.getSource() == crna) RisList.barvice = Color.black; else if(e.getSource() == razveljavi) RisList.razveljavi(); else if(e.getSource() == uveljavi) RisList.uveljavi(); } } class RisalnaPovrsina extends JPanel implements MouseListener, MouseMotionListener { /*deklaracija spremenljivk*/ Color barvice; Image slike[]; static int raz = 0; // stevilo kolikrat smo razveljavili static int uve = 0; //stevilo kolikrat smo uveljavili int stSlike=0; int lineX,lineY; //sirina, visina; /*konstruktor*/ public RisalnaPovrsina(int stRaz) { barvice = Color.black; //defoult barva slike = new Image[stRaz+1]; } /*redefinicija metode paintComponent*/ public void paintComponent(Graphics g) { super.paintComponent(g); if (slike[0] == null) { for (int i=0; i<slike.length; i++) { slike[i] = this.createImage(800, 600); //ustvari sliko } } g.drawImage(slike[stSlike],0,0,null); //nariše na platno 0,0 sta koordinati zg. desnega roba null pomeni } /*kaj narediti, če kliknemo z miško*/ public void mousePressed(MouseEvent e) { lineX = e.getPoint().x; // komponenta x lineY = e.getPoint().y; //komponenta y Image temp = this.createImage(800, 600); //ustvari sliko temp.getGraphics().drawImage(slike[stSlike],0,0,null); //nariše sliko dodajSliko(temp); //sliko shrani v bazo podatkov } /*kaj narediti, če miško vlečemo*/ public void mouseDragged(MouseEvent e) { Graphics g = slike[stSlike].getGraphics(); g.setColor(barvice); //nastavi barvo g.drawLine(lineX, lineY, e.getPoint().x,e.getPoint().y); //nariše črto med dvema točkama lineX = e.getPoint().x; //komponenta x lineY = e.getPoint().y; //komponenta y repaint(); //osvezi sliko } private void dodajSliko(Image im) { if (stSlike == slike.length-1) //če ni več prostora { for (int i=1;i<slike.length;i++) { slike[i-1] = slike[i]; //prmakne vse slike za eno mesto navzdol } stSlike--; } stSlike++; slike[stSlike] = im; //shrani sliko } public void razveljavi() //metoda za razveljavitev { if (stSlike != 0) { stSlike--; raz ++; } repaint(); } public void uveljavi() // metoda za uveljavitev { if ((stSlike < 32) && ( uve < raz )) { stSlike++; uve ++; } repaint(); } //metode, ki jih ne rabimo, vendar jih je potrebno redefinirati! public void mouseClicked(MouseEvent e){ } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } public void mouseReleased(MouseEvent e){ } public void mouseMoved(MouseEvent e){ } }
matjazx ::
če rab sam mal več rama probi zagnat recimo s -Xmx200M
k po defaultu ma JVM omejitev 64M
k po defaultu ma JVM omejitev 64M
Zgodovina sprememb…
- spremenil: matjazx ()
l0g1t3ch ::
ja to že vendar je to sam pometanje problema pod preprogo, ker zadeva ne more bit ok če mi nabija cpu usage na 100% pa tud 64 rama nima kaj žret en slikarček preprost
l0g1t3ch ::
Ok pol ram bom preživu to. Kaj pa cpu zakaj mi nabija na 100% Pomoje bi znal bit blem v metodi repaint() oz klicanju le te, ker 1x me je to že zajebaval.
Samo risanje črte med dvema piksloma pomoje ne more bit tolk procesorsko zahtevno ali pač ?
Samo risanje črte med dvema piksloma pomoje ne more bit tolk procesorsko zahtevno ali pač ?
matjazx ::
probi namest slike shranjevt recimo Vectorje točk
drgač sm pa probu zalaufat pa mi ne nabija procesor na 100%
drgač sm pa probu zalaufat pa mi ne nabija procesor na 100%
SkIDiver ::
Ej men dela isto!
CPU usage mi nabije na 100% zraven mi pa kur 86MB rama
EDIT: Kako dosečt, da mi bo risalo bolj tekoče. Trenutno mi na čase nardi presledke vmes. Rišem pa na BufferedImage, ki ga lima na panel.
CPU usage mi nabije na 100% zraven mi pa kur 86MB rama
EDIT: Kako dosečt, da mi bo risalo bolj tekoče. Trenutno mi na čase nardi presledke vmes. Rišem pa na BufferedImage, ki ga lima na panel.
private boolean buttonDown = true; protected void paintComponent(Graphics g) { g.drawImage(image, 0, 0, null); } private void doPaint(int x, int y) { if(buttonDown) return; graphics.fillOval(x,y,7,7); repaint(x,y,7,7); } public void mouseDragged(MouseEvent e) { doPaint(e.getX(),e.getY()); } public void mouseMoved(MouseEvent e) { doPaint(e.getX(),e.getY()); } public void mousePressed(MouseEvent e) { if(e.getButton()==MouseEvent.BUTTON1) buttonDown = false; doPaint(e.getX(),e.getY()); } public void mouseReleased(MouseEvent e) { if(e.getButton()==MouseEvent.BUTTON1) buttonDown = true; } public void mouseExited(MouseEvent e) { buttonDown = true; } public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {}
Zgodovina sprememb…
- spremenil: SkIDiver ()
l0g1t3ch ::
import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; public class Slikar //main funkcija { public static void main(String[] args) { Okno o = new Okno(16); //kreiramo objekt razreda okno o.setVisible(true); //prikažemo okno } } class Okno extends JFrame implements ActionListener { //deklaracija spremenljivk RisalnaPovrsina RisList; JButton rdeca, modra, rumena, zelena, oranzna, crna; JMenuItem razveljavi; JMenuItem uveljavi; //konstruktor public Okno(int steviloRaz) { setTitle("Slikar 1.0"); //naslov setDefaultCloseOperation(Okno.EXIT_ON_CLOSE); //metoda, ki konča program Container vsebina = getContentPane(); //kontajner, na katerega "lepimo" gumbe,... vsebina.setLayout(null); //sami bomo razporejevali stvari setExtendedState(Okno.MAXIMIZED_BOTH); //okno programa bo zavzelo velikost zaslona setBackground(Color.white); //nastavimo barvo ozadja //gumbi in določanje njihovih barv ter poslušalcev rdeca =new JButton(); rdeca.setBackground(Color.red); rdeca.addActionListener(this); rdeca.setBounds(0,10,50,30); modra =new JButton(); modra.setBackground(Color.blue); modra.addActionListener(this); modra.setBounds(50,10,50,30); rumena =new JButton(); rumena.setBackground(Color.yellow); rumena.addActionListener(this); rumena.setBounds(0,40,50,30); zelena =new JButton(); zelena.setBackground(Color.green); zelena.addActionListener(this); zelena.setBounds(50,40,50,30); oranzna =new JButton(); oranzna.setBackground(Color.orange); oranzna.addActionListener(this); oranzna.setBounds(0,70,50,30); crna =new JButton(); crna.setBackground(Color.black); crna.addActionListener(this); crna.setBounds(50,70,50,30); //dodajanje gumbov na conteiner vsebina.add(rdeca); vsebina.add(modra); vsebina.add(rumena); vsebina.add(zelena); vsebina.add(oranzna); vsebina.add(crna); //meni vrstica JMenuBar menu = new JMenuBar(); JMenu podMenu = new JMenu("Orodja"); razveljavi = new JMenuItem("Razveljavi"); razveljavi.addActionListener(this); uveljavi = new JMenuItem("Uveljavi"); uveljavi.addActionListener(this); razveljavi.setActionCommand("Razveljavi"); //Sets the command name of the action event that is fired by this menu item. razveljavi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,ActionEvent.CTRL_MASK)); uveljavi.setActionCommand("Uvelajvi"); uveljavi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,ActionEvent.CTRL_MASK)); podMenu.add(razveljavi); podMenu.add(uveljavi); menu.add(podMenu); setJMenuBar(menu); /* setAccelerator - nastavi kombinacijo tipk katerih pritisk prestreže poslusalec od JMenuItem KeyStroke.getKeyStroke - razred.metoda ugotovi ali sta pritisnjena gumba ctrl in z KeyEvent.VK_Z dogodek, ki kaze, da se je zgodil pritisk na doloceno tipko v nasem primeru na Z ActionEvent.CTRL_MASK Preveri ce v casu dogodka drzimo stisnjeno tipko ctrl */ //dodamo ploščo, na katero bomo risali, določimo velikost plošče RisList = new RisalnaPovrsina(steviloRaz); RisList.setDoubleBuffered(true); // nastavimo, da je povrsina double buffered RisList.setBounds(110, 10, 800, 600); //velikost ploskve,pozicija RisList.addMouseListener(RisList); RisList.addMouseMotionListener(RisList); vsebina.add(RisList); } //poslušalec - kaj izvršiti ob dogodku -actionlistener public void actionPerformed(ActionEvent e) { if(e.getSource() == rdeca) RisList.barvice = Color.red; else if(e.getSource() == rumena) RisList.barvice = Color.yellow; else if(e.getSource() == modra) RisList.barvice = Color.blue; else if(e.getSource() == zelena) RisList.barvice = Color.green; else if(e.getSource() == oranzna) RisList.barvice = Color.orange; else if(e.getSource() == crna) RisList.barvice = Color.black; else if(e.getSource() == razveljavi) RisList.razveljavi(); else if(e.getSource() == uveljavi) RisList.uveljavi(); } } class RisalnaPovrsina extends JPanel implements MouseListener, MouseMotionListener { /*deklaracija spremenljivk*/ Color barvice; BufferedImage slike[]; // Image slike[]; static int raz = 0; // stevilo kolikrat smo razveljavili static int uve = 0; //stevilo kolikrat smo uveljavili int stSlike=0; int lineX,lineY; //sirina, visina; /*konstruktor*/ public RisalnaPovrsina(int stRaz) { barvice = Color.black; //defoult barva slike = new BufferedImage[stRaz+1]; } /*redefinicija metode paintComponent*/ public void paintComponent(Graphics g) { super.paintComponent(g); if (slike[0] == null) { for (int i=0; i<slike.length; i++) { slike[i] = createGraphics(); } } g.drawImage(slike[stSlike],0,0,null); //nariše na platno 0,0 sta koordinati zg. desnega roba null pomeni } /*kaj narediti, če kliknemo z miško*/ public void mousePressed(MouseEvent e) { lineX = e.getPoint().x; // komponenta x lineY = e.getPoint().y; //komponenta y Image temp = this.createImage(800, 600); //ustvari sliko temp.getGraphics().drawImage(slike[stSlike],0,0,null); //nariše sliko dodajSliko(temp); //sliko shrani v bazo podatkov } /*kaj narediti, če miško vlečemo*/ public void mouseDragged(MouseEvent e) { Graphics g = slike[stSlike].getGraphics(); g.setColor(barvice); //nastavi barvo g.drawLine(lineX, lineY, e.getPoint().x,e.getPoint().y); //nariše črto med dvema točkama lineX = e.getPoint().x; //komponenta x lineY = e.getPoint().y; //komponenta y repaint(); //osvezi sliko } private void dodajSliko(Image im) { if (stSlike == slike.length-1) //če ni več prostora { for (int i=1;i<slike.length;i++) { slike[i-1] = slike[i]; //prmakne vse slike za eno mesto navzdol } stSlike--; } stSlike++; slike[stSlike] = im; //shrani sliko } public void razveljavi() //metoda za razveljavitev { if (stSlike != 0) { stSlike--; raz ++; } repaint(); } public void uveljavi() // metoda za uveljavitev { if ((stSlike < 20) && ( uve < raz )) { stSlike++; uve ++; } repaint(); } public void mouseClicked(MouseEvent e) { Graphics g = slike[stSlike].getGraphics(); Point tocka = e.getPoint(); int x=(int)tocka.getX(); int y=(int)tocka.getY(); int c = slike[stSlike].getRGB(x,y); zapolni(c,tocka); } public void zapolni(int c, Point p) { Graphics g = slike[stSlike].getGraphics(); int h = 600; int w = 800; Vector<Point> v = new Vector<Point>(); v.add(p); if((Color)c == barvice) return; int x=(int)p.getX(); int y=(int)p.getY(); p = v.elementAt(0); slike[stSlike].setRGB(x,y,barvice.getRGB()); repaint(); while(!(v.isEmpty())) { if (((slike[stSlike].getRGB(x+1,y))==c)&& (x<w)) { p=new Point(x+1,y); v.add(p); slike[stSlike].setRGB((int)p.getX(),(int)p.getY(),barvice.getRGB()); repaint(); } if (((slike[stSlike].getRGB(x-1,y))==c)&&(x>0)) { p=new Point(x-1,y); v.add(p); slike[stSlike].setRGB((int)p.getX(),(int)p.getY(),barvice.getRGB()); repaint(); } if (((slike[stSlike].getRGB(x,y+1))==c)&&(y>0)) { p=new Point(x,y+1); v.add(p); slike[stSlike].setRGB((int)p.getX(),(int)p.getY(),barvice.getRGB()); repaint(); } if (((slike[stSlike].getRGB(x,y-1))==c)&&(y<h)) { p=new Point(x,y-1); v.add(p); slike[stSlike].setRGB((int)p.getX(),(int)p.getY(),barvice.getRGB()); repaint(); } v.remove(0); if (v.size()>0) { p=v.elementAt(0); x=(int)p.getX(); y=(int)p.getY(); } } } //metode, ki jih ne rabimo, vendar jih je potrebno redefinirati! public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } public void mouseReleased(MouseEvent e){ } public void mouseMoved(MouseEvent e){ } }
Zdej sm še neki čaru za zapolnjevanje likov. Vendar zadeva ne dela spljoh
Zna kdo pomagat pri tem ker mi najde 5 sintaktičnih napak in noče prevset. Sam pa tudi ne znam popravit tega.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | java, Swing in vmesnik ActionListenerOddelek: Programiranje | 685 (622) | marjan_h |
» | [java] Osnovna vprašanjaOddelek: Programiranje | 2632 (1639) | killa bee |
» | 4 v vrsto [java pomoč]Oddelek: Programiranje | 1516 (1343) | Spura |
» | [java] opcijsko oknoOddelek: Programiranje | 2080 (1861) | infiniteLoop |
» | Java,actionlistener problemOddelek: Programiranje | 1135 (1121) | JaaZoo |