Forum Sveta kompjutera  

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 20.11.2013, 23:27   #81
Ivan452
Veteran
 
Član od: 25.7.2008.
Lokacija: Beograd
Poruke: 772
Zahvalnice: 33
Zahvaljeno 189 puta na 152 poruka
Slanje poruke preko MSN-a korisniku Ivan452
Određen forumom Re: How to... Java

@Nix

Paint nije bas 'bilo koja' metoda. To je override-ovana metoda.
Stvar je u tome sto prilikom dodavanja neke komponente (npr Frame-a) automatski se poziva metoda paint.

Na jednostavnijem nivou, to je isto kao kada u svojoj klasi override-ujes metodu toString, i onda kada uradis System.out.println(objekat_tvoje_klase) on ispise sta god si mu rekao u toString.
Kao sto kada uradis println objekta on pozove toString, tako kada dodas graficku komponentu ona pozove paint.


P.S
Pomesao si termine 'implicitno' i 'explicitno'.
Ivan452 je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Ivan452 na korisnoj poruci:
NIx Car (21.11.2013)
Stara 21.11.2013, 11:40   #82
NIx Car
Deo inventara foruma
 
Član od: 28.12.2006.
Lokacija: New Now
Poruke: 3.559
Zahvalnice: 1.668
Zahvaljeno 907 puta na 509 poruka
Slanje poruke preko MSN-a korisniku NIx Car Slanje poruke preko Skypea korisniku NIx Car
Određen forumom Re: How to... Java

Mislim da sam ukapirao... Posto me je gomila stvari i oko dogadjaja bunila... profesor mi je poslao kako ja sam da napravim svoj dogadjaj... Izgleda jako konfuzno ali ukapiracu i to
NIx Car je offline   Odgovor sa citatom ove poruke
Stara 28.11.2013, 21:26   #83
NIx Car
Deo inventara foruma
 
Član od: 28.12.2006.
Lokacija: New Now
Poruke: 3.559
Zahvalnice: 1.668
Zahvaljeno 907 puta na 509 poruka
Slanje poruke preko MSN-a korisniku NIx Car Slanje poruke preko Skypea korisniku NIx Car
Određen forumom Re: How to... Java

Imam klasu Krugovi u kojoj sam napravio konstruktor

Kod:
public Krugovi()
	{
		Random r = new Random();	
		x = r.nextInt(800);
		y = r.nextInt(600);
	}
I sad u mainu sam napravio niz objekata tipa Krugovi
Kod:
Krugovi[] kr = new Krugovi[5];
I kada zelim da prikazem vrednost x ili y, vrednost bilo kog x ili y ne postoji, tacnije java opali exception. Zasto?
NIx Car je offline   Odgovor sa citatom ove poruke
Stara 29.11.2013, 22:52   #84
Krilce
Starosedelac
 
Član od: 4.11.2007.
Poruke: 1.547
Zahvalnice: 1.595
Zahvaljeno 560 puta na 329 poruka
Određen forumom Re: How to... Java

Citat:
NIx Car kaže: Pregled poruke
Imam klasu Krugovi u kojoj sam napravio konstruktor

Kod:
public Krugovi()
	{
		Random r = new Random();	
		x = r.nextInt(800);
		y = r.nextInt(600);
	}
I sad u mainu sam napravio niz objekata tipa Krugovi
Kod:
Krugovi[] kr = new Krugovi[5];
I kada zelim da prikazem vrednost x ili y, vrednost bilo kog x ili y ne postoji, tacnije java opali exception. Zasto?
Zato sto nigde nisi instancirao krugove.

Kod:
Krugovi[] kr = new Krugovi[5];
Ovim si samo rekao da ce ovaj niz sadrzati 5 objekata tipa Krug, ali ti je taj niz trenutno prazan. Kada pokusas da pristupis elementu unutar praznog niza, dobijes null pointer exception, iliti "nema niceg".

U for petlji napuni taj niz krugovima.
Kod:
        Krug[] krugovi = new Krug[5];
		
	for(int i = 0; i < krugovi.length; i++) {
	     krugovi[i] = new Krug();
	     System.out.println(krugovi[i].getX() + " " + krugovi[i].getY());
	}
I, da, mala napomena sto se tice imenovanja klasa, objekata, itd. Tebi ova klasa predstavlja jedan krug, a ti si je imenovao Krugovi, sto se, naravno, odnosi na mnozinu. Moze ti se u projektu desiti da moras da npr. serijalizujes kolekciju krugova, sto bi znacilo da bi ti bila potrebna klasa koja ce kao atribut imati neku kolekciju koja ce sadrzati objekte tipa Krug. Takvu klasu, koja se odnosi na kolekciju objekata, bilo bi ok nazvati u mnozini, iliti Krugovi. "k" takodje nije deskriptivan naziv za niz krugova.

Verujem da zvucim kao neko matoro zakeralo, ali zamisli da su tvorci jave davali imena atributima i klasama na taj nacin. Zamisli kolika bi zbrka ispala iz svega toga, pa kad trazis atribut koji se zove "color", a ono imas samo nesto sto se zove "c". Najverovatnije ne bi ni pretpostavio da je u pitanju ono sto tebi treba. Ili da radis na nekom projektu, a moras da desifrujes kod kolege, i da trazis sta je "c", sta je"k", sta je "a", itd. Rezultat = manjak kose, kraci zivci, manjak produktivnosti.

Poslednja ispravka: Krilce (29.11.2013 u 23:02)
Krilce je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Krilce na korisnoj poruci:
NIx Car (30.11.2013)
Stara 30.11.2013, 16:46   #85
NIx Car
Deo inventara foruma
 
Član od: 28.12.2006.
Lokacija: New Now
Poruke: 3.559
Zahvalnice: 1.668
Zahvaljeno 907 puta na 509 poruka
Slanje poruke preko MSN-a korisniku NIx Car Slanje poruke preko Skypea korisniku NIx Car
Određen forumom Re: How to... Java

Skontao sam to maaalo kasnije (gde sam napravio gresku). Takodje sam i ime klase izmenio.
Imam jos gomilu problema sa kojima se susrecem oko rada na ovom zadatku, ali cu probati sam da ih resim, pa ako zapnem , javljam se
NIx Car je offline   Odgovor sa citatom ove poruke
Stara 1.12.2013, 23:47   #86
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom Re: How to... Java

Dok Nix radi ja bih zatražio pomoć oko Jave.

Pravim program sa JavaFX-om koji crta vektorsku grafiku na Canvas. Jel zna neko da li se oblik (path) formiran pozivima lineTo, arcTo, itd može ikako obrisati, ili ta staza ostaje zanavek zakucana na tom Canvas-u. Sad mi nije problem sa pravougaonicima i ostalim mnogouglovima (jer postoje metode za direktno crtanje i punjenje linija, pravougaonika, poligona), ali za komplikovanije ne vidim kako da implementiram.
ivan90BG je offline   Odgovor sa citatom ove poruke
Stara 8.12.2013, 15:54   #87
Teva
Starosedelac
 
Član od: 23.2.2006.
Lokacija: Tamo gde su kuće od čokolade i prozori od marmelade....
Poruke: 1.579
Zahvalnice: 195
Zahvaljeno 301 puta na 171 poruka
Određen forumom Re: How to... Java

Nisam nešto preterano upoznat sa javom, ali ne možeš da brišeš path sa canvasa kolko znam. Moraš da brišeš ceo canvas, ili ja msm da postoji metoda za brisanje dela canvasa (clearRectangle ili tako nešto)
Teva je offline   Odgovor sa citatom ove poruke
Stara 8.12.2013, 17:45   #88
Krilce
Starosedelac
 
Član od: 4.11.2007.
Poruke: 1.547
Zahvalnice: 1.595
Zahvaljeno 560 puta na 329 poruka
Određen forumom Re: How to... Java

Mozda da iskoristis MVC sablon, tako da razdvojis element i njegov shape, pa da imas nesto sto ce brinuti o iscrtavanju elemenata na canvas, tako da posle samo obrises citav element, umesto da pokusavas da brises sam shape. Brainstorming.
Krilce je offline   Odgovor sa citatom ove poruke
Stara 8.12.2013, 21:55   #89
Ivan452
Veteran
 
Član od: 25.7.2008.
Lokacija: Beograd
Poruke: 772
Zahvalnice: 33
Zahvaljeno 189 puta na 152 poruka
Slanje poruke preko MSN-a korisniku Ivan452
Određen forumom Re: How to... Java

Citat:
Krilce kaže: Pregled poruke
Mozda da iskoristis MVC sablon, tako da razdvojis element i njegov shape, pa da imas nesto sto ce brinuti o iscrtavanju elemenata na canvas, tako da posle samo obrises citav element, umesto da pokusavas da brises sam shape. Brainstorming.
MVC pattern se ne koristi za te stvari. Za ovu problematiku sto si ti spomenuo koristi se Command patern ili Memento.
Ivan452 je offline   Odgovor sa citatom ove poruke
Stara 8.12.2013, 22:27   #90
Krilce
Starosedelac
 
Član od: 4.11.2007.
Poruke: 1.547
Zahvalnice: 1.595
Zahvaljeno 560 puta na 329 poruka
Određen forumom Re: How to... Java

Citat:
Ivan452 kaže: Pregled poruke
MVC pattern se ne koristi za te stvari. Za ovu problematiku sto si ti spomenuo koristi se Command patern ili Memento.
Mislio sam da ti treba citava aplikacija za tako nesto, pa da nju odradis po MVC-u. Moguce da nisam najbolje razumeo pitanje.
Krilce je offline   Odgovor sa citatom ove poruke
Stara 11.12.2013, 21:03   #91
Belfegor
Starosedelac
 
Član od: 3.12.2006.
Lokacija: Autoput za Nis
Poruke: 1.262
Zahvalnice: 367
Zahvaljeno 240 puta na 131 poruka
Određen forumom Re: How to... Java

Ako je neko online, treba mi pomoc sa jednim testom za skolu....radi se o validaciji, uradio sam sve, bar mislim ali svejedno u polja za slova mogu da pisem brojeve i obrnuto....u pitanju je javascript
Belfegor je offline   Odgovor sa citatom ove poruke
Stara 11.12.2013, 21:19   #92
Ivan452
Veteran
 
Član od: 25.7.2008.
Lokacija: Beograd
Poruke: 772
Zahvalnice: 33
Zahvaljeno 189 puta na 152 poruka
Slanje poruke preko MSN-a korisniku Ivan452
Određen forumom Re: How to... Java

Objasni malo bolje problem (nisam siguran da je ovo tema za JS). Iz ovog napisanog deluje mi kao posao za regularni izraz.
Ivan452 je offline   Odgovor sa citatom ove poruke
Stara 11.12.2013, 21:53   #93
Belfegor
Starosedelac
 
Član od: 3.12.2006.
Lokacija: Autoput za Nis
Poruke: 1.262
Zahvalnice: 367
Zahvaljeno 240 puta na 131 poruka
Određen forumom Re: How to... Java

Sredjeno...falila jedna zagrada i kosa crta
Belfegor je offline   Odgovor sa citatom ove poruke
Stara 21.12.2013, 16:04   #94
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom Re: How to... Java

Kako da u Swing-u namestim da prozor (JFrame ili JDialog) ima tanak okvir (špicaste ivice, tanak title bar, ima samo close dugme)? To se u Win32 zove WS_EX_TOOLWINDOW.

Spoiler za Ovaj stil:
ivan90BG je offline   Odgovor sa citatom ove poruke
Stara 21.12.2013, 16:40   #95
Ivan452
Veteran
 
Član od: 25.7.2008.
Lokacija: Beograd
Poruke: 772
Zahvalnice: 33
Zahvaljeno 189 puta na 152 poruka
Slanje poruke preko MSN-a korisniku Ivan452
Određen forumom Re: How to... Java

Citat:
ivan90BG kaže: Pregled poruke
Kako da u Swing-u namestim da prozor (JFrame ili JDialog) ima tanak okvir (špicaste ivice, tanak title bar, ima samo close dugme)? To se u Win32 zove WS_EX_TOOLWINDOW.

Spoiler za Ovaj stil:
probaj sa
Kod:
JFrame frame = new JFrame();
frame.setUndecorated(true);
frame.setShape(new RoundRectangle2D.Double(10, 10, 100, 100, 50, 50));
frame.setSize(300, 200);
frame.setVisible(true);
Ivan452 je offline   Odgovor sa citatom ove poruke
Stara 21.12.2013, 19:46   #96
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom Re: How to... Java

To nije to

Ali otkrio sam kako da to uradim. Treba da se koristi JNA biblioteka.

Kod:
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef.*;
//...
JFrame frame = new JFrame();
long ptr = Native.getWindowID(frame);
HWND hwnd = new HWND(new Pointer(ptr));
User32.INSTANCE.SetWindowLong(hwnd, User32.GWL_EXSTYLE, 0x80);
frame.setVisible(true);
0x80 je vrednost Win32 #define konstante WS_EX_TOOLWINDOW koja (uključujući i mnoge druge) nije definisana u JNA biblioteci.

Inače, desilo mi se nešto neverovatno, skinuo sam JNA, ubacio u projekat, otkucao ovaj kod, i proradio je kako je očekivano iz prve, što mi se desi jednom u 2 meseca.
ivan90BG je offline   Odgovor sa citatom ove poruke
Stara 21.12.2013, 21:22   #97
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 10.142
Zahvalnice: 1.562
Zahvaljeno 4.352 puta na 2.434 poruka
Određen forumom Re: How to... Java

S tim što si izgubio multiplatformnost, pošto direktno gađaš USER32.DLL koji je Windows-specific... doduše ne znam koliko ti je to bitno za projekat.
Ovo između "new JFrame" i "frame.setVisible" bi mogao da proveriš u rantajmu preko System.getProperty("os.name"), ali ne znam oko ovih importova gore, da li u Javi postoji neki ekvivalent C-ovskom "#ifdef _WIN32 #include <to_i_to.h>"...

Poslednja ispravka: voodoo_ (21.12.2013 u 21:38)
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 21.12.2013, 22:05   #98
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom Re: How to... Java

Ne brini, mislim ja na multiplatformnost od početka. Još ranije sam definisano apstraktnu klasu PlatformUtils koja ima podklase za Windows i Mac OS X, gde su razne utility metode za platformski specifične stvari (koja će biti instancirana određuje se baš na osnovu os.name, a i os.version). A ovaj kod gore je samo ono što na stack overflow zovu minimal working example.
ivan90BG je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku ivan90BG na korisnoj poruci:
voodoo_ (21.12.2013)
Stara 12.1.2014, 1:04   #99
NIx Car
Deo inventara foruma
 
Član od: 28.12.2006.
Lokacija: New Now
Poruke: 3.559
Zahvalnice: 1.668
Zahvaljeno 907 puta na 509 poruka
Slanje poruke preko MSN-a korisniku NIx Car Slanje poruke preko Skypea korisniku NIx Car
Određen forumom Re: How to... Java

Kod:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.CubicCurve2D;

public class Luk extends Applet implements Runnable, MouseMotionListener {

	private int drawY = 200;
	private int y;
	CubicCurve2D cubicCurve;
	
    @Override
    public void init() {

        setSize(800, 480);
        setBackground(Color.BLACK);
        setFocusable(true);
        addMouseMotionListener(this);
        Frame frame = (Frame) this.getParent().getParent();
        frame.setTitle("Luk");
        cubicCurve = new CubicCurve2D.Double();
    }

    @Override
    public void start() {
        Thread thread = new Thread(this);
        thread.start();
    }

    @Override
    public void stop() {
        // TODO Auto-generated method stub
    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
    }

    @Override
    public void run() {
        while (true) {

            repaint();
           try
           {
        	   Thread.sleep(18);
           }catch(InterruptedException e){}
        }
    }

	
	
	public void paint (Graphics g)
	{
		Graphics2D g2 = (Graphics2D) g;
		g.setColor(Color.RED);
		
		cubicCurve.setCurve(110, 50, 300,drawY, 200, drawY, 600, 50);
		g2.draw(cubicCurve);
	}

	@Override
	public void mouseDragged(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseMoved(MouseEvent e) {
		
		
	}
}
Treba mi ideja kako da, kada korisnik klikne na levi klik (ubacicu i one metode za MouseListener), sve dok ga ne pusti, menja velicinu luka u zavisnosti od trentutne pozicije misa (kao u paintu kada pravite zakrivljenu liniju pa podesavate kako ce biti zakrivljena)

I didn't came up with anything..
NIx Car je offline   Odgovor sa citatom ove poruke
Stara 12.1.2014, 2:40   #100
Ivan452
Veteran
 
Član od: 25.7.2008.
Lokacija: Beograd
Poruke: 772
Zahvalnice: 33
Zahvaljeno 189 puta na 152 poruka
Slanje poruke preko MSN-a korisniku Ivan452
Određen forumom Re: How to... Java

Izvoli ovo:

Kod:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.QuadCurve2D;
import javax.swing.*;
import javax.swing.border.*;

class Main extends JFrame {

    private int tool = 1;
    int currentX, currentY;
    QuadCurve2D q = new QuadCurve2D.Float();
    Graphics2D g2d;
    public Main() {
        initComponents();
    }

    private void initComponents() 
    {
        jPanel2 = new Panel2();
        q.setCurve(1, 2, 200, 200, 100, 200);
        jPanel2.setBackground(new java.awt.Color(255, 255, 255));
        jPanel2.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

        jPanel2.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(MouseEvent evt) {
                jPanel2MouseDragged(evt);
            }
        });

        this.setContentPane(jPanel2);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
    }

    private void jPanel2MouseDragged(MouseEvent evt) {
        if (tool == 1) {
            currentX = evt.getX();
            currentY = evt.getY();      
            q.setCurve(1, 2, currentX, currentY, 100, 200);
            jPanel2.repaint();
        }
    }   

    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Main().setVisible(true);
            }
        });
    }
    
    private JPanel jPanel2;
    
    class Panel2 extends JPanel {

        Panel2() {setPreferredSize(new Dimension(420,420));}

        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);                      
            g2d = (Graphics2D) g;
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
            g2d.draw(q);          
        }
    }
}
Na brzinu sam 'zbudzio' od nekog starog koda koji sam imao. Sa tim sto ja nisam crtao krivu vec kvadrat koji je menjao velicinu (ali je isti princip).
Mozda kod nije najlepsi, ali radi

X i Y koordinate pocetne i krajnje tacke krive su fiksirane u kodu, prilikom prevlacenja se menja samo zakrivljenje. Verujem da ce ti to biti dovoljno da iskoristis u svom projektu.

P.S
Moja preporuka je da krivu odvojis kao poseban objekat i onda da mozes da joj lako menjas i ostale atribute po zelji.
I nemoj tvoju klasu da nazivas 'Luk', jer luk(arc) i kriva(curve) nisu isto.
Ivan452 je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Ivan452 na korisnoj poruci:
NIx Car (13.1.2014)
Odgovor

Bookmarks sajtovi

Tagovi
java

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Java - out of Memory Vajsmilan Aplikativni softver 6 6.2.2012 20:54
Android - pozivanje Java metoda iz native koda voodoo_ Programiranje 5 14.10.2011 8:59
Samsung D600 Java upload (USB cable) Aleksandar Programi za mobilne telefone 0 16.6.2008 13:54
Jel' se ovo misli na Java Script ili? Tim85 Internet tehnologije 2 7.12.2006 12:33
G-thing program za LG(imam U8180) za java igre trazim gde ima? besplatno?trial? Ilic Marko Programi za mobilne telefone 1 9.2.2006 14:09


Sva vremena su po Griniču +2 h. Sada je 19:22.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2019, vBulletin Solutions, Inc.
Hosted by Beograd.com