NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Funkce, kterou se snažíš použít je dostupná pouze pro registrované uživatele. Buďto se přihlas nebo si zdarma vytvoř nový účet.

Diskuze – Lekce 4 - Java GUI

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:29.3.2013 20:24

Zkusil jsem si dva cykly. V jednom jsem před dělením testoval, zda je dělitel nenulový, ve druhém jsem uvnitř cyklu měl try...catch. Cyklus s výjimkami byl nepatrně rychlejší než cyklus, ve kterém se testovala nenulovost dělitele. Výjimky jsou tedy lepší.

Pokud však k výjimce došlo při každém průchodu cyklem, zpracování se zpomalilo zhruba 1000×. To však nehraje roli, protože k výjimkám obvykle dochází výjimečně :)

Můj obstarožní NTB na 700 MHz v cyklu zpracoval zhruba 30000 výjimek dělení nulou za sekundu, takže něco máš asi špatně...

Odpovědět
29.3.2013 20:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek Satik:30.3.2013 14:38

Máš pravdu, zapomněl jsem, že se mi výjimky vypisují do konzole, bez toho výpisu se jich stihne provést víc, cca 50 000 za sekundu, ale pořád jsou mnohem mnohem pomalejší, než cokoliv jiného.

Pošli kód, protože pokud cyklus s výjimkami byl rychlejší než cyklus s podmínkou, tak tam máš nějakou chybu, protože už z logiky fungování výjimek je to úplný nesmysl - vždyť porovnání hodnoty, jestli není nula, je jedna jednoduchá jnz nebo jz instrukce navíc, zatímco u výjimek se (kromě uložení stavů některých registrů procesoru) přidávají nějaká data pro obsluhu výjimky na zásobník...

Editováno 30.3.2013 14:39
Odpovědět
30.3.2013 14:38
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:30.3.2013 17:36

Zkusím opsat z hlavy kód, který jsem použil. S podmínkou:

int x;
for (int i = 0; i < 1000000000; i++) {
   if (i != 0) {
      x = 2000000000 / i;
   } else {
      x = 0;
   }
}

S výjimkou:

int x;
for (int i = 0; i < 1000000000; i++) {
   try {
      x = 2000000000 / i;
   } catch (Exception e) {
      x = 0;
   }
}

S výjimkou to bylo cca o 1 % rychlejší než s podmínkou.

Odpovědět
30.3.2013 17:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
martinkobelka
Tvůrce
Avatar
martinkobelka:30.3.2013 23:09

Když chcu přidávat do formuláře prvky pomocí GridBagConstraints, tak mi to zobrazuje výjmku, nevíte čím to je? kod :

package snake;

import java.awt.Color;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JFrame;
import javax.swing.JLabel;

class Windows extends JFrame{
    public void kresli(){
        setTitle("Kalkulačka");
        setSize(450, 700);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container con = getContentPane();

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.insets = new Insets(10, 10, 10, 10);

        JLabel labCislo1 = new JLabel("Zadejte první číslo:");
        gbc.gridx = 1;
        gbc.gridy = 1;

        con.add(labCislo1, gbc);



        setVisible(true);
    }
}
 
Odpovědět
30.3.2013 23:09
Avatar
Samik11
Tvůrce
Avatar
Odpovídá na martinkobelka
Samik11:30.3.2013 23:32

Nikde jsi layout nepřidal, to se dělá metodou:

setLayout()

Popravdě moc nechápu jak máš ten kód členěný. Podstatou je, že si vytvoříš třídu která dědí z JFrame, v tvém případě Windows a pak v hlavní metodě vytvoříš objekt této třídy. Zkus si projít ty předchozí díly. Případně stáhni zdrojáky. :-)

Odpovědět
30.3.2013 23:32
„Radost vidět a rozumět, to je nejkrásnější dar přírody.“ Albert Einstein
Avatar
niveses
Tvůrce
Avatar
niveses:31.5.2013 17:22

Co lze udělat pro výsledky v mínusech?

 
Odpovědět
31.5.2013 17:22
Avatar
dNtichy
Člen
Avatar
dNtichy:29.10.2013 23:55

Mozem natiahnut component aj cez viac buniek tabulky gridbaglayoutu ako len cez 1?

 
Odpovědět
29.10.2013 23:55
Avatar
D0ll0k
Člen
Avatar
D0ll0k:25.5.2014 21:08

Já jsem tu nový a začínám "programovat". Chci se zeptat kam přesně mám vložit řádky po tom, co se zpátky vracíme k actionPerformed. Já jsem je vložil do třídy Event. Jenomže mi to hlásí chybu: Source not found. Mohl by prosím někdo říct kam je mám vložit?

Odpovědět
25.5.2014 21:08
Veni, vidi, programmato
Avatar
D0ll0k
Člen
Avatar
Odpovídá na D0ll0k
D0ll0k:11.6.2014 7:24

Tak už nic. Našel jsem to. Zapoměl jsem přidal GridBagLayout. Toto tady chybi, jak to zapsat. Musel jsem si to stáhnout a podívat se.

Odpovědět
11.6.2014 7:24
Veni, vidi, programmato
Avatar
reguluscentauri:29.11.2015 22:21

Zdravím,
chtěl bych se jen zeptat, kde dělám chybu
Když vložím GridBagConstraints gbc = new GridBagConstra­ints(), tak mi to vypíše chybu, vytvořím tedy podle návrhu Netbeans class pro gbc, do toho pak musim vložit
Insets insets;
int gridx;
int gridy;
A umazat tam final

A při spuštění mi netbeans vypíše
Exception in thread "main" java.lang.Ille­galArgumentEx­ception: cannot add to layout: constraints must be a GridBagConstraint

Kód jsem porovnal se zdrojákem odsud a je stejný až na to, že autor tam nemá class pro gbc. Je nějaká varianta, jak to obejít, která mi unikla nebo v čem může být problém?

Předem děkuji

 
Odpovědět
29.11.2015 22:21
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 23.