Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako uciniti dijalog efikasnijim ?

[es] :: Java :: Kako uciniti dijalog efikasnijim ?

[ Pregleda: 2774 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

jocat
Jovica T
Inđija

Član broj: 58613
Poruke: 74
*.smin.sezampro.yu.

ICQ: 308769610


Profil

icon Kako uciniti dijalog efikasnijim ?11.11.2005. u 13:59 - pre 223 meseci
Imam dijalog koji na sebi sadrzi veliki broj komponenti, sto slika, panela, labela ..

Ucitavanje ne izgleda bas lepo za oko, pa da li postoji neka mogucnost elegantnog prevazilazenja ovog problema ? Da li nekako moze i progres bar da se integrise sa ovako necim ... Da li moze da se dobije tacno vreme ucitavanja nekog dijaloga ?

Hvala unapred
... sve se moze kad se hoce ...
 
Odgovor na temu

tiranin
Dorćol

Član broj: 37185
Poruke: 245
*.168.nat-pool-bgd.sbb.co.yu.



Profil

icon Re: Kako uciniti dijalog efikasnijim ?11.11.2005. u 15:58 - pre 223 meseci
Mozes li da das bar deo koda, ili da spustis slicicu, da se stekne utisak o cemu se radi, jer ta sporost moze biti rezultat samog Swinga, a moze biti i uzrok u tvom kodu.
 
Odgovor na temu

jocat
Jovica T
Inđija

Član broj: 58613
Poruke: 74
*.com
Via: [es] mailing liste

ICQ: 308769610


Profil

icon Re: Kako uciniti dijalog efikasnijim ?11.11.2005. u 16:22 - pre 223 meseci
Evo komponente koje se sve nalaze na formi :

Code:

private javax.swing.JPanel jContentPane = null;  //  @jve:decl-index=0:
        private JPanel jPanel = null;  //  @jve:decl-index=0:
        private JPanel jPanel1 = null;  //  @jve:decl-index=0:
        private Image pozadinaZadaci;   
        private Image skrivenaSlika;
        private JPanel jPanel2 = null;  //  @jve:decl-index=0:
        private JPanel jPanel3 = null;  //  @jve:decl-index=0:
        private JLabel lNivo = null;  //  @jve:decl-index=0:
        private JLabel lNazivNivoa = null;  //  @jve:decl-index=0:
        private JLabel lGrupa = null;  //  @jve:decl-index=0:
        private JLabel lNazivGrupe = null;  //  @jve:decl-index=0:
        // naziv nivoa koji se prosledjuje sa neke druge forme
        private String NazivNivoa = null;
        // naziv grupe koji se prosledjuje sa neke druge forme
        private String NazivGrupe = null;
    // id nivoa za koji se resavaju zadaci
        public int id_nivoa = 1;
        // id grupe za koji se resavaju zadaci
        public int id_grupe = 1;
        // LABELE U KOJIMA CE BITI POSTAVLJENI TEKSTOVI ZADATAKA        
        private JLabel zad1 = null;     private JLabel zad2 = null;     private JLabel zad3 = null;  //  @jve:decl-index=0:
        private JLabel zad4 = null;     private JLabel zad5 = null;     private JLabel zad6 = null;  //  @jve:decl-index=0:
        private JLabel zad7 = null;     private JLabel zad8 = null;     private JLabel zad9 = null;  //  @jve:decl-index=0:
        private JLabel zad10 = null; private JLabel zad11 = null; private JLabel zad12 = null;  //  @jve:decl-index=0:
        private JLabel zad13 = null; private JLabel zad14 = null; private JLabel zad15 = null;  //  @jve:decl-index=0:
        private JLabel zad16 = null; private JLabel zad17 = null; private JLabel zad18 = null;  //  @jve:decl-index=0:
        private JLabel zad19 = null; private JLabel zad20 = null;  //  @jve:decl-index=0:
        //-----------------------------------------------------------------------------------------
        // EDIT U KOJIMA CE SE BELEZITI RESENJA
        private JTextField res1 = null; private JTextField res2 = null; private JTextField res3 = null;  //  @jve:decl-index=0:
        private JTextField res4 = null; private JTextField res5 = null; private JTextField res6 = null;  //  @jve:decl-index=0:
        private JTextField res7 = null; private JTextField res8 = null; private JTextField res9 = null;  //  @jve:decl-index=0:
        private JTextField res10 = null; private JTextField res11 = null; private JTextField res12 = null;  //  @jve:decl-index=0:
        private JTextField res13 = null; private JTextField res14 = null; private JTextField res15 = null;  //  @jve:decl-index=0:
        private JTextField res16 = null; private JTextField res17 = null; private JTextField res18 = null;  //  @jve:decl-index=0:
        private JTextField res19 = null; private JTextField res20 = null;  //  @jve:decl-index=0:
        private JPanel jPanel4 = null;  //  @jve:decl-index=0:
        //-----------------------------------------------------------------------------------------
        // PANELI KOJI PREKRIVAJU SKRIVENU SLIKU
        private JPanel sp1 = null; private JPanel sp2 = null; private JPanel sp3 = null;  //  @jve:decl-index=0:
        private JPanel sp4 = null; private JPanel sp5 = null; private JPanel sp6 = null;  //  @jve:decl-index=0:
        private JPanel sp7 = null; private JPanel sp8 = null; private JPanel sp9 = null;  //  @jve:decl-index=0:
        private JPanel sp10 = null; private JPanel sp11 = null; private JPanel sp12 = null;  //  @jve:decl-index=0:
        private JPanel sp13 = null; private JPanel sp14 = null; private JPanel sp15 = null;  //  @jve:decl-index=0:
        private JPanel sp16 = null;private JPanel sp17 = null; private JPanel sp18 = null;  //  @jve:decl-index=0:
        private JPanel sp19 = null;private JPanel sp20 = null;  //  @jve:decl-index=0:
        private JPanel pProveraResenja = null;
        private JPanel pIzlaz = null;
        private JLabel lProveraResenja = null;
        private JLabel lIzlaz = null;
        private JPanel pPromeniNivo = null;
        private JLabel lPromeniNivo = null;
        private JPanel jPanel5 = null;
        private JLabel jLabel = null;
        private JPanel jPanel6 = null;
</code>

A sto se tice recimo glavnog panela on izgleda ovako (panel sa
najvise komponenti) :
<code>
        private JPanel getJPanel1() {
                if (jPanel1 == null) {
                        lNazivNivoa = new JLabel();
                        lNivo = new JLabel();
                        lGrupa = new JLabel();
                        lNazivGrupe = new JLabel();
                        jPanel1 = new JPanel(){
                                public void paintComponent(Graphics g) {
                                        super.paintComponent(g);
                                jPanel1.setSize(580,280);
                                if(pozadinaZadaci==null) {
                                        pozadinaZadaci = jPanel1.createImage(580,280);
                                }
                                        Toolkit tk = java.awt.Toolkit.getDefaultToolkit();
                                        pozadinaZadaci = tk.getImage(getClass().getResource("pozadzad.gif"));
                                        int h = pozadinaZadaci.getHeight(jPanel1), w = pozadinaZadaci.getWidth(jPanel1);
                                        g.drawImage(pozadinaZadaci, 0,0, null, jPanel1);
                                        //super.paint(g);
                         }
                                        
                        };
                        jPanel1.setLayout(null);
                        jPanel1.setLocation(14, 14);
                        jPanel1.setSize(580, 280);
                        lNivo.setText("Nivo :");
                        lNivo.setSize(50, 20);
                        lNivo.setLocation(190, 20);                     
                        lNivo.setFont(new java.awt.Font("SansSerif", java.awt.Font.BOLD, 14));
                        lNazivNivoa.setText("blablabla");
                        lNazivNivoa.setLocation(235, 20);
                        lNazivNivoa.setSize(160, 20);
                        lGrupa.setText("Grupa :");
                        lGrupa.setFont(new java.awt.Font("SansSerif", java.awt.Font.BOLD, 14));
                        lGrupa.setLocation(350, 20);
                        lGrupa.setSize(100, 20);
                        lNazivGrupe.setText("BlAblAblAblA");
                        lNazivGrupe.setLocation(430, 20);
                        lNazivGrupe.setSize(100, 20);
                        jPanel1.add(lNivo, null);
                        jPanel1.add(lNazivNivoa, null);
                        jPanel1.add(lGrupa, null);
                        jPanel1.add(lNazivGrupe, null);
                        UcitajZadatkeULabele(jPanel1,id_nivoa,id_grupe,true);
                        DodajTextFieldsZaResenja(jPanel1, true);
                        jPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));                 
                }
                return jPanel1;
        }



default konstruktor
<code>
/**
* This is the default constructor
*/
public ResavanjeZadataka() {
super();
initialize();
UcitajIdNivoIdGrupa();
this.PostaviNazivNivoa(id_nivoa);
this.PostaviNazivGrupe(id_nivoa, id_grupe);
}
</code>

metoda initialize()

<code>
this.setResizable(false);
this.setSize(800, 600);
this.setContentPane(getJContentPane());
this.setTitle(" ... _:_:_:_:_:_:_ ... Re�avanje zadataka ... _:_:_:_:_:_:_ ...");
}
</code>

Eto to je otprilike najvazniji i mislim najreprezentativniji kod,
inace klasa ima preko 1200 linija koda ...

[Ovu poruku je menjao veljaradenkovic dana 11.11.2005. u 20:37 GMT+1]
... sve se moze kad se hoce ...
 
Odgovor na temu

tiranin
Dorćol

Član broj: 37185
Poruke: 245
*.168.nat-pool-bgd.sbb.co.yu.



Profil

icon Re: Kako uciniti dijalog efikasnijim ?11.11.2005. u 17:59 - pre 223 meseci
Prvo sto mi pada na pamet je da pomocu SwingUtilities.invokeLater(...) odradis inicijalizaciju komponenti koje u prvom pojavljivanju nece biti vidljive.
Koliko sam shvatio, ovo je nesto poput onog kviza na BK, pa znaci inicijalno zelis da ti se vidi samo nesto od ovih komponenti, a kasnije ce otvarati i zatvarati nesto po potrebi. Iz toga zakljucujem da ti u startu mnoge komponente nisu potrebne da se vide, pa njihovo instanciranje mozes da odradis u posebnom tredu.
Ne mogu da tvrdim da ce da pomogne, ali ne moze da skodi, znaci pomaze :)
 
Odgovor na temu

jocat
Jovica T
Inđija

Član broj: 58613
Poruke: 74
*.com
Via: [es] mailing liste

ICQ: 308769610


Profil

icon Re: Kako uciniti dijalog efikasnijim ?12.11.2005. u 15:29 - pre 223 meseci
Pa u svakom slucaju tako nesto bi donekle trebalo da pomogne, mada sa
nekim izmenama... Inace sve komponente bi trebalo pri startovanju forme
odmah da se vide.
Najveci problem zadaju slike (postoje dve).
Jednu sliku na pocetku sigurno prekriva 20 panelcica, tako da ona moze
da se odradi sa InvokeLater...
Mislim da bi najzgodnije bilo da se nekako vrsi ucitavanje forme nekim
progres barom ili tako necim slicnim dok se sve komponente ne ucitaju
i ne budu spremne za prikazivanje ...

Inace ova forma uvek postoji, a ukoliko neka druga postoji preko
nje, tada se sve prekriva sa jednim velikim panelom, na kom bi trebalo
da se nalazi neka slika ... Ponovnim aktiviranjem ove forme, uklanja
se panel i opet je sve vidljivo..

Nikako i ne uspevam da podesim da neka forma koja se nalazi preko gore
pomenute bude Modal, tj. dok se ona ne ugasi da ova glavna ne moze da
se selektuje... Da li to moze u Javi kao i u C++ Builder-u ?
... sve se moze kad se hoce ...
 
Odgovor na temu

Toxter
NS

Član broj: 39393
Poruke: 317
*.ftn.ns.ac.yu.



+6 Profil

icon Re: Kako uciniti dijalog efikasnijim ?13.11.2005. u 00:07 - pre 223 meseci
Citat:
jocat: ...Nikako i ne uspevam da podesim da neka forma koja se nalazi preko gore
pomenute bude Modal, tj. dok se ona ne ugasi da ova glavna ne moze da
se selektuje... Da li to moze u Javi kao i u C++ Builder-u ?


Moze.
Moras da koristis JDialog.
Tu imas setModal(boolean).

Pozdrav!
Sad mu nije nista, ubio si ga k'o zeca...
 
Odgovor na temu

[es] :: Java :: Kako uciniti dijalog efikasnijim ?

[ Pregleda: 2774 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.