Diskuze: První aplikace - spuštění dvojklikem

Java Java První aplikace - spuštění dvojklikem

Avatar
Roman Duchoň:

Ahoj,
můj první příspěvek tady, ale měli byste vědět, že ač jsem v začátcích, jsem neskutečně zapálenej a rozjetej.

Píši první prográmky v Javě, zajímalo by mě, jak ošetřit, aby i prográmky typu "Hello world!" šli spustit dvojklikem a ne přes terminál nebo cmd?

Tuším, že to samo o sobě nejde, ale není na to nějaký kód? Rád bych se pochlubil kamarádům, či přítelkyni.
Aby do mě pořád neryli...

Odpovědět 29. srpna 13:17
RD
Avatar
Michal Haňáček:

V Javě nedělám, ale mám za to, že builder ti sestaví *.JAR, který je spustitelný "dvojklikem" za předpokladu že máš provozuschopný java virtuální stroj (nevím jak je to v případě windows s asociacemi, ty by sis když tak musel nastavit sám).

Nahoru Odpovědět 29. srpna 15:46
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
pocitac770
Redaktor
Avatar
pocitac770:

Nenapadá mě žádný způsob, jak to spustit takto přímo, ano, ono se to dvojklikem spustí, ale nevidíš output, protože se neotevře konzole. Šlo by to oklikou, že budeš vždy posílat ještě "spouštěcí" soubor, stačí do poznámkového bloku (cmd -> notepad) napsat

java -jar TvujSoubor.jar

kde TvujSoubor.jar je název onoho jar souboru, a uložit výsledný soubor jako "všechny soubory" a název něco ve stylu "spoustec.bat", pak stačí mít spouštěč ve stejné složce jako aplikaci, a dvojkliknout na spouštěč, otevře se nomálně konzole. Později, až se dostaneš k okenním aplikacím, tak to bude ještě jednodušší, to to půjde tím klasickým dvojklikem :)

 
Nahoru Odpovědět  +1 29. srpna 15:50
Avatar
Roman Duchoň:

No, já myslel, že k tomu slouží JDK...
Ubuntu, ani W8 mi to nepobrali.
Tak mně stačí NetBeans, ale přeci jen, takové vyznání lásky spuštěné dvojklikem by bylo pěkné.

Není to nic, co bych akutně potřeboval, učím se dál, přesto bych nějaký tip uvítal.

No, říkám si, jak tu asi musím působit... mějte strpení. :)

Nahoru Odpovědět 29. srpna 15:50
RD
Avatar
Odpovídá na pocitac770
Roman Duchoň:

pocitac770: Ozkouším, děkuji za tip!

No a na okenní aplikace se hrozně těším! :)

Nahoru Odpovědět 29. srpna 15:53
RD
Avatar
Odpovídá na Roman Duchoň
Michal Haňáček:

No, říkám si, jak tu asi musím působit... mějte strpení. :)

V pohodě, pokud se nebudeš ptát na nesmysly a nebudeš se chovat jako blbec, tak snad nepamatuju situaci kdy by se zdejší komunita nesnažila pomoct. Každej tady nějak začínal, nebo bude ...

Nahoru Odpovědět  +3 29. srpna 17:20
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Roman Duchoň:

pocitac770: Fakt parádní tip! Soubor START.bat funguje skvěle :) Už jsem překvapil přítelkyni a další překvápko chystám...

Jen ještě hledám nějaké řešení pro Linux. Jsem uživatelem Ubuntu teprve asi měsíc. Předtím jen W.
Soubor *.sh se mi sám o sobě v Terminálu nespustí (spustit přes terminál jde). Zavaděč Wine *.bat taky sám od sebe nepobere (jen zase přes Terminál -> Wine cmd). Pak jsem četl o spouštěčích (Plocha -> pravé tlačítko myši), to mi nějak nejde. Buď je to verzí Ubuntu (16.04) nebo nástavbou Gnome.

Nějaká rada by se hodila, ale opravdu je to pro mě druhořadé. Hlavně, že mně to funguje. Už se zas těším domů k PC. :)

Nahoru Odpovědět 30. srpna 8:27
RD
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Roman Duchoň
pocitac770:

Mělo by to jít, musíš ale povolit spuštění souboru jako programu, viz screeny (prostě složitej linux na bázi DIY :D )

 
Nahoru Odpovědět  +1 30. srpna 16:01
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:

Trošku jsem nepochopil, jaký má být výsledek nebo spíš na co se v původním requestu ptáš. Jako to si představuješ, že si dvakrát poklepeš na nějakou vygenerovanou ikonku a pak se otevře texťák, konzola, panel, aplikace, word, .html soubor s nápisem "Nazdar světe"?
Java má spoustu možností pro takový výpis. Např.: v IDE BlueJ máš krásné UML tříd, kde si na ni klepneš, vytvoříš a spustí se ti dokonce konstruktorm/im­plicitní konstruktor, bez metody main(String[] args). Nevím přesně jak to tam je, ale BlueJ je v tomto vcelku originální - že napíšeš pouze hlavičku třídy a pak nějakou metodu (nemusí to být ani konstruktor) a pak tam napíšeš klasický output a spustíš si to (ale jen v tom BlueJáckém IDEčku).

Jestli chceš pracovat s konzolou (což mi příjde i před přítelkyní více prestyžní:), přece jen ITák z 90% pracuje s cmd linou:) ), tak ti stačí main metoda a jedeš.

Ale pokud tedy chceš přímo nějakou vizualizaci po dvojkliku, tak něco triviálního bych napsal asi takhle:
musíš mít 3 věci:

  • jeden soubor .java
  • nějaký kompilátor s VM (obsahují ho všechny IDEčka - NetBeans, BlueJ, Eclipse, IdeaIDE, a spousty další) - a JDK sadu (nevím, jestlis někdy řešil tento rozdíl, ale můžeš si stáhnout několik balíků Javy:
    • JDK (Java Development Kid) jak už druhé slovíčko napovídá, je to balíček pro vývoj
    • JRE (Java Runtime Enviroment) i tady druhé slovíčko napoví, že jde pouze o běhový balíček. Když máš JRE, tak na tomto počítači spustíš Javu, ale nemáš k dispozici žádné knihovny ani kompilátor apod. Pouze VM, na kterém můžeš jenom spouštět JAR aplikace

Potom se ještě Java dělí na různé platformy (edice):

  • J2SE (Java to standard edition) je základní edice. Tady máš nějaké swingovské a fx balíky (na GUI), různé tamplety, applety apod. v SE se musíš naučit základní techniky a metodiky (od zapouzdření po rozhraní všechno)
  • J2EE (Java to enterprise edition) je rozšířená edice J2SE. Enterprise edici nelze popsat stylem: "do ní patří tyto balíky". Je to spíš způsob, jak propojit víc projektů dohromady, komunikace mezi nimi, komunikace s databází, propojení Javy s JavaScriptem, Pythonem, Linuxem, a různými nástroji (Maven apod). Když to řeknu velice jednoduše a hodně ořezaně: J2SE = 5% Javy, J2EE = 95% Javy :) ) EE je vyžadována všude v zaměstnání, ale když ovládáš perfektně SE, považuje se to za základ.
  • J2ME (Java to micro edition) prostě osekanější standardní edice - používá se hlavně pro mobilní aplikace a podobným malým zařízení
  • Java Card - tato edice je podmnožinou J2ME a používá se hlavně pro čipy, čipové karty apod.

*pozn.: ta 2 (vyjadřující slovíčko "pro" se už dneska nepíše, ale já jsem na to zvyklý:) stará škola:)) *

Takže vyber si edici, které se chceš věnovat, ale pochopitelně začni od standardní a k té své vytoužené přejdi až pak.

No a teď jak bych to napsal:

  • 1 Stačí ti na něco triviálního obyčejná class
public class ExampleWindow {

}

hlavička třídy a její tělo, ohraničené složenými závorkami { }

  • 2 zdědíš JFrame třídu (co to znamená dědit od někoho si najdeš ve zdejších toturiálech, prozatím se spokoj s tím, že to znamená, že napíšeš extends a v našem případě tím vytvoříme okenní aplikaci) + musíme nainportovat balík do naší třídy - to se taky dočteš v toturiálech, co to znamená a proč. Zjednodušeně - abys mohl použít dědění z JFrame, tak musíš mít k dispozici jeho nástroje a ty jsou v balíku javax.swing.JFrame.
import javax.swing.JFrame;

public class ExampleWindow extends JFrame {

}

zdědili jsme JFrame a máme okenní aplikaci

  • 3 vytvoříme konstruktor - to je speciální metoda, která nemá návratový ani prázdný typ a její název je shodný s názvem třídy. Konstruktor musí obsahovat každá třída - pokud ho nemá napsaný, tak obsahuje prázdný konstruktor, který nic nedělá. Takovému konstruktoru se říká "implicitní konstruktor". Takže každá třída (ať už napsaný nebo ne) má a musí mít konstruktor.
import javax.swing.JFrame;
public class ExampleWindow extends JFrame {

        public ExampleWindow() {

        }
}

přidala se hlavička a tělo konstruktoru

  • 4 vytvoříme main metodu (main metoda spouští Java program. Je to jediná metoda, kterou nevolá program, ale operační systém
import javax.swing.JFrame;
public class ExampleWindow extends JFrame {

        public ExampleWindow() {

        }

        public static void main(String[] args) {

        }
}

přidali jsme main metodu - nyní je náš program spustitelný

  • 5 napíšeme do main metody, že se má vytvořit nová ExampleWindow třída (prostě zavoláme konstruktor)
import javax.swing.JFrame;
public class ExampleWindow extends JFrame {

        public ExampleWindow() {

        }

        public static void main(String[] args) {
                new ExampleWindow();
        }
}

vytváříme novou třídu zavoláním konstruktoru v main metodě

  • 6 a na konec nastvíme okýnko. Předek JFrame má v sobě několik přednastavených metod. My nastavíme, aby se okno zobrazilo, aby mělo nějakou velikost, aby se nějak jmenovalo a aby se aplikace zavřela křížkem
import javax.swing.JFrame;
public class ExampleWindow extends JFrame {

        public ExampleWindow() {
                setVisible(true);               // díky této metodě se okno zobrazí (bez ní ho prostě neuvidíš)
                setSize(300, 300);              // tady nastavujeme, kolik pixelů bude mít na šířku a výšku
                setTitle("hokus pokus");        // tady nastavíme jméno vlevo nahoře (když ho tam nenapíšeš, nic se nestane)
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // vcelku důležitá metoda, která umožní zavírat aplikaci křížkem. Pokud ji takhle nenastavíš, tak okýnko sice křížkem zmizí, ale aplikace furt běží jako vlákno (ve windows je to proces) takže kdybys to tak spustil ve windows, třeba 2000x po sobě a byl to už složitější program, tak ti spadne windows:)
        }

        public static void main(String[] args) {
                new ExampleWindow();
        }
}

Nastvíme okýnko

  • 7 no a na konec tam přidáme nějaký panel s nějakým labelem (šlo by eventuálně přidat label (okno pro nápis bez možnosti zadávání uživatelských dat) přímo na frame (JFrame) (frame = hlavní okno programu, které už máme), ale je to prasárna. Každá aplikace by měla mít hlavní okno (frame) a všechny komponenty (komponent jsou tlačítka, labely, textové okna, posuvník, apod) by měly být na nějakém panelu. Tzn. že program se skládá z hlavního okna (frame) a x jednotlivých panelů (java má dokonce speciálně pro to komponentu JPanel :) jak příhodné) Je to dobré proto, že jednotlivé panely mohou mít různé layouty a navíc když si na jeden panel nastavíš třeba tlačítka a na druhý nějaké vizuální okno, tak víš, že když se něco posere ve vizuálním okně, tak tlačítka jsou vždy tam, kde mají být + můžeš třeba i pro něco jiného nastavit jiné pozadí atd.

Takže teď použijeme čtyři komponenty: JPanel, JLabel, JTextField a JButton (ať si může ta tvoje s něčím hrát:D)
všechny 4 komponenty jsou ve stejném balíku, jako JFrame - tak je nejdřív naimportujeme a ze šetrnosti píšu do examplu pouze importy...

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;

public class ExampleWindow extends JFrame {

import komponent

  • 8 Tak teď máme importy - tzn. že máme k dispozici tyto komponenty. Neznamená to, že od každého máme pouze jednu komponentu, ale můžeme si jich udělat kolik chceme. Nejdřív si připravíme deklaraci (nyní jen lokální, i když se to tak moc nepoužívá, ale teď to bude stačit, to si potom sám vylepšíš). Deklarace znamená, že si nejdříve připravíme objekty, se kterými budeme pracovat a kolik jich bude. Takže uděláme jedno plátno, na něj dva popisky a jeden textový panel a tlačítko. Kód tedy bude vypadat celý takto:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;

public class ExampleWindow extends JFrame {

        public ExampleWindow() {
                setVisible(true);               // díky této metodě se okno zobrazí (bez ní ho prostě neuvidíš)
                setSize(300, 300);              // tady nastavujeme, kolik pixelů bude mít na šířku a výšku
                setTitle("hokus pokus");        // tady nastavíme jméno vlevo nahoře (když ho tam nenapíšeš, nic se nestane)
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // vcelku důležitá metoda, která umožní zavírat aplikaci křížkem. Pokud ji takhle nenastavíš, tak okýnko sice křížkem zmizí, ale aplikace furt běží jako vlákno (ve windows je to proces) takže kdybys to tak spustil ve windows, třeba 2000x po sobě a byl to už složitější program, tak ti spadne windows:)

                JPanel panel;           // první slovo představuje typ, jakého bude nový objekt a druhé slovo je název objektu
                JLabel lbl1, lbl2;      // když chceme vytvořit víc objektů stejného typu, oddělujeme jednotlivé názvy čárkou
                JTextField txt;         // a je zavedená konvence, že všechny názvy objektů se píšou malým počátečním písmem bez háčků a čárek a pokud se název skládá z více slov, tak se používá CamelCase (velbloudí notace)
                JButton button;         // velbloudí notace znamená, že kromě prvního slova začínají všechna ostatní slova velkým písmenem např.: tohleJeVelbloudiNotace
        }

        public static void main(String[] args) {
                new ExampleWindow();
        }
}
  • 9 no a na konec všechny komponenty inicializujeme (naplníme, identifikujeme, vytvoříme), nastavíme jim různé parametry pomocí podobných metod, jako má předek JFrame, panel přidáme na frame a zbylé komponenty přidáme na panel a máme hotovo.
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;

public class ExampleWindow extends JFrame {

        public ExampleWindow() {
                setVisible(true);               // díky této metodě se okno zobrazí (bez ní ho prostě neuvidíš)
                setSize(300, 300);              // tady nastavujeme, kolik pixelů bude mít na šířku a výšku
                setTitle("hokus pokus");        // tady nastavíme jméno vlevo nahoře (když ho tam nenapíšeš, nic se nestane)
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // vcelku důležitá metoda, která umožní zavírat aplikaci křížkem. Pokud ji takhle nenastavíš, tak okýnko sice křížkem zmizí, ale aplikace furt běží jako vlákno (ve windows je to proces) takže kdybys to tak spustil ve windows, třeba 2000x po sobě a byl to už složitější program, tak ti spadne windows:)

                JPanel panel;           // první slovo představuje typ, jakého bude nový objekt a druhé slovo je název objektu
                JLabel lbl1, lbl2;      // když chceme vytvořit víc objektů stejného typu, oddělujeme jednotlivé názvy čárkou
                JTextField txt;         // a je zavedená konvence, že všechny názvy objektů se píšou malým počátečním písmem bez háčků a čárek a pokud se název skládá z více slov, tak se používá CamelCase (velbloudí notace)
                JButton button;         // velbloudí notace znamená, že kromě prvního slova začínají všechna ostatní slova velkým písmenem např.: tohleJeVelbloudiNotace

                panel = new JPanel();
                panel.setSize(300, 300);
                panel.setLayout(null);
                add(panel);             //metodu add(Component comp); zavolá třída frame - přeloženo do češtiny: bez ohledu na předchozí řádky, voláme metodu add přes předka (JFrame) a řekneme, že se má na hlavní okono (frame) přidat panel. Mohlo by být napsané this.add(panel); ale v tomto případě se bere prázdný prostor že to patří k hlavnímu oknu (frame)

                lbl1 = new JLabel();
                lbl1.setSize(75, 25);
                lbl1.setText("Textové pole");
                lbl1.setLocation(50, 50);               // nastavíme souřadnice na panelu. Pokud se nenastaví, bere se automaticky pro všechny komponenty defaultní pozice [0,0]
                panel.add(lbl1);                //stejně, jako se panel přidával na frame, tak teď přidáváme popisek na panel
                lbl2 = new JLabel();
                lbl2.setSize(lbl1.getSize()); // jsem ITák líná a tak si kradu rozměry z prvního popisku:)
                lbl2.setLocation(lbl1.getX() + 100, lbl1.getY()); // tady si beru jen výchozí pozici z prvního popisku, aby byly ve stejné řadě (pozicování je taky v každém tutoriálu + vysvětlení, co je zapozdření (metody setNěco(<typ> param, <typ> param), getNěco() )
                lbl2.setText("tlačítko");
                panel.add(lbl2);        // nezapomínej volat metodu add z panelu, jinak se ti to přidá na frame a máš to "pod panelem":)

                txt = new JTextField();
                txt.setSize(lbl1.getSize()); // komponenta jako komponenta:)
                txt.setLocation(lbl1.getX(), lbl1.getY() + 50);
                panel.add(txt);

                button = new JButton("Push"); //tlačítku můžeme rovnou nastavit, co bude mít "na sobě" za text
                button .setSize(lbl1.getSize());
                button .setLocation(lbl2.getX(), txt.getY());
                panel.add(button);
        }

        public static void main(String[] args) {
                new ExampleWindow();
        }
}

inicializace a pozicování komponent
No a na úplný závěr nastavíme tlačítku nějakého posluchače (zase něco, co se naučíš v J2SE), aby se něco vykonalo, když se na něj klikne. Tak třeba něco napíše do TextFieldu nebo ho porovná atd. atd. to si už experimentuj)

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;

public class ExampleWindow extends JFrame {

        public ExampleWindow() {
                setVisible(true);               // díky této metodě se okno zobrazí (bez ní ho prostě neuvidíš)
                setSize(300, 300);              // tady nastavujeme, kolik pixelů bude mít na šířku a výšku
                setTitle("hokus pokus");        // tady nastavíme jméno vlevo nahoře (když ho tam nenapíšeš, nic se nestane)
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // vcelku důležitá metoda, která umožní zavírat aplikaci křížkem. Pokud ji takhle nenastavíš, tak okýnko sice křížkem zmizí, ale aplikace furt běží jako vlákno (ve windows je to proces) takže kdybys to tak spustil ve windows, třeba 2000x po sobě a byl to už složitější program, tak ti spadne windows:)

                JPanel panel;           // první slovo představuje typ, jakého bude nový objekt a druhé slovo je název objektu
                JLabel lbl1, lbl2;      // když chceme vytvořit víc objektů stejného typu, oddělujeme jednotlivé názvy čárkou
                JTextField txt;         // a je zavedená konvence, že všechny názvy objektů se píšou malým počátečním písmem bez háčků a čárek a pokud se název skládá z více slov, tak se používá CamelCase (velbloudí notace)
                JButton button;         // velbloudí notace znamená, že kromě prvního slova začínají všechna ostatní slova velkým písmenem např.: tohleJeVelbloudiNotace

                panel = new JPanel();
                panel.setSize(300, 300);
                panel.setLayout(null);
                add(panel);             //metodu add(Component comp); zavolá třída frame - přeloženo do češtiny: bez ohledu na předchozí řádky, voláme metodu add přes předka (JFrame) a řekneme, že se má na hlavní okono (frame) přidat panel. Mohlo by být napsané this.add(panel); ale v tomto případě se bere prázdný prostor že to patří k hlavnímu oknu (frame)

                lbl1 = new JLabel();
                lbl1.setSize(75, 25);
                lbl1.setText("Textové pole");
                lbl1.setLocation(50, 50);               // nastavíme souřadnice na panelu. Pokud se nenastaví, bere se automaticky pro všechny komponenty defaultní pozice [0,0]
                panel.add(lbl1);                //stejně, jako se panel přidával na frame, tak teď přidáváme popisek na panel
                lbl2 = new JLabel();
                lbl2.setSize(lbl1.getSize()); // jsem ITák líná a tak si kradu rozměry z prvního popisku:)
                lbl2.setLocation(lbl1.getX() + 100, lbl1.getY()); // tady si beru jen výchozí pozici z prvního popisku, aby byly ve stejné řadě (pozicování je taky v každém tutoriálu + vysvětlení, co je zapozdření (metody setNěco(<typ> param, <typ> param), getNěco() )
                lbl2.setText("tlačítko");
                panel.add(lbl2);        // nezapomínej volat metodu add z panelu, jinak se ti to přidá na frame a máš to "pod panelem":)

                txt = new JTextField();
                txt.setSize(lbl1.getSize()); // komponenta jako komponenta:)
                txt.setLocation(lbl1.getX(), lbl1.getY() + 50);
                panel.add(txt);

                button = new JButton("Push"); //tlačítku můžeme rovnou nastavit, co bude mít "na sobě" za text
                button .setSize(lbl1.getSize());
                button .setLocation(lbl2.getX(), txt.getY());
                panel.add(button);
                button.addActionListener((ActionEvent) -> {

                });
        }

        public static void main(String[] args) {
                new ExampleWindow();
        }
}

přidání posluchače na tlačítko
A za předpokladu, že bys toto všechno měl dobře napsané, tak ti to musí vyhodit exception (chybu), že to nezná ani metodu addActionListe­ner(ActionEvent evt) a ani ActionEvent událost. Oba tyto případy musíš naimportovat (takže třeba na konec k importům vmáčkni import java.awt.even­t.ActionListe­ner; a java.awt.even­t.ActionEvent;)
a jsi král:) toto když zadáš třeba do Netbeans (vytvoříš si tam nejdřív novou Java class a pak tam napíšeš (nebo když si liný jako já, tak zkopíruješ:)) tento kód, tak pak to zkompiluješ -> zmáčkneš klávesu Shift + F11. Něco se bude dít a až to narazí na řádek:
"BUILD SUCCESSFUL (total time: 0 seconds)"
tak to máš zkompilované a v JAR souboru (.JAR soubor je Javovský spustitelný soubor, obsahující všechny potřebné class soubory. Je to v podstatě zip file, takže když na to klikneš pravým a použiješ nějaký unrar, unzip nebo power archiver (já osobně jsem velkým příznivcem právě posledního z nich - power archiveru:) ) tak to můžeš rozzipovat.

Tento soubor najdeš defaultně v adresáři: (nevím jestli to je přesně tak, já si to ukládám na svůj local:) )
C://users/user_na­me/NetBeansPro­ject/nazev_pro­jektu/dist/na­zev_projektu.jar
aspoň doufám, že tak nějak - no prostě tam, kde máš uložený tento projekt (to snad najdeš), tak po kompilování (stisknutí shift + F11) se ti vytvoří adresář ./dist a v něm máš jar soubor a to je ten onen, po kterém asi toužíš:)

Na tento soubor (xy.jar) můžeš dvakrát poklepat a jestli jsi napsal kód, který jsem ti step by step popsal, měla by se ti vlevo nahoře vytvořit nová simple appka:)

Pardon za spam, ale já už sem takový :D PS: nedávám sem poslední kód, je to ten předposlední + ty dva importy, to si snad dopíšeš sám-.- a hlavně neručím za funkčnost, psal jsem to bez kontroly v IDE:D takže jestli je tam nějaký překlep - sorry za něj, ale IDE tě na to upozorní;)

Nahoru Odpovědět 12. září 17:31
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:

pardon za ty překlepy a trošku chaotickou sémantiku :D (myslím, že u většiny bodů píšu a na konec)
jsem v práci a píšu to za běhu paralelně se svým taskem :D

Nahoru Odpovědět 12. září 17:39
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:

Jo a pardon, teď jsem si ještě všiml, že v tom posledním kódu v tom posluchači chybí nějaký command, tak tam třeba napiš:

button.addActionListener((ActionEvent) -> {
        txt.setText("#FF0000 je rudá barva");
});
Nahoru Odpovědět 12. září 17:47
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Lubor Pešek
pocitac770:

Takže, neber to jako hate, ale předtím, než napíšeš takovýto příspěvek, tak se neprve detailně koukni, jak onen člověk píše, o čem píše, a hlavně na jaké asi tak bude podle tebe úrovni. Pár připomínek:

  • Je to už nějakou dobu staré téma, již vyřešené, proč na něj odpovídáš?
  • Očividně jde o začátečníka. Vidíš, že dělá pouze s konzolí "Těším se na okenní aplikace", tak asi s nimy neumí, a ty mu tu hned cpeš Swing. Vážně, než něco takového napíšeš, zamysli se nad tím, co vím, nestalo se to poprvé.
  • Po tomhle bych se na jeho místě spíš leknul, a možná i od programování opustil, když hned v začátcích na mě někdo tohle začne chrilit. Opět, to samé co napsané v předchozím bodě

Děkuji za přečtení

 
Nahoru Odpovědět 12. září 19:07
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na pocitac770
Lubor Pešek:

14 dní zas tak moc velké stáří není - když třeba započítám, že třeba i týden někdo nemusí mít čas kontrolovat všechny příspěvky
A teď ti trošku vrátím úder:) ten tvůj příspěvek nad mým je podle tebe for beginners?:)
A ještě taková drobnost - co je na swingu složitého? jen jsem mu popsal (a dokonce krok za krokem) jak by asi ta jeho vysněná okenní apka mohla být realizována nic víc. Spíš by se určitě lekl, kdybych mu ten finální kód dal bez jakéhokoliv komentáře - takhle může mít představu, jak postupovat.
Napiš mi, co je tam tak složitého a nepochopitelného (max. ten posluchač, že je zapsán novou terminologií, ale to je asi jediné)

Nahoru Odpovědět  -1 12. září 21:46
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Lubor Pešek
pocitac770:

Nevím, co konkrétně myslíš příspěvkem nad tím tvým. Myslíš ten můj? Pouze jsem popisova to, co chtěl autor ve své původní žádosti. Postavil jsem svoji odpověď tak, aby jí jasně pochopil na té úrovni, na které se zde prezentoval, což se očividně hned na první pokus podařilo. Samozřejmě, to, co jsi zde napsal by mohlo tomu člověku pomoci, ale kdo ví? Řekl, jestli již umí OOP? Mám pocit že ne, v tu chvíli je lepší se buď zeptat, jak je daleko, případně to vysvětlit co nejjednodušeji, ty jsi předpokládal již nabyté zkušenosti. Navíc, nechci šťourat do Swingařů, ale prý je Swing "mrtvý", ano, vím, že není, ale je prostě doporučeno se spíše učit JavaFX, který by měl být jeho nástupcem. K celkovému porozumění, představ si to celé z pohledu někoho, kdo úplně perefktně neví vše o programování, je opravdu začátečník. Jako příklad bych mohl dát svého kámoše (promiň, pokud čteš a poznáš se v tom :D ), musíš mu to vysvětlit pomalu, aby to pochopil, nezahrnovat ho příliš různými pojmy, představ si začátečníka jako plachou lesní zvěř, můžeš k ní pomalu příjít, nebo příběhnout s otevřenou náručí, samozřejmě, to druhé zní nádherně, ale výsledek si představit asi dokážeme. Kdybych to já jako začátečník četl, asi bych přehřál google... Co je to BlueJ? Jak s tímhle souvisí? Jak je možné, že se v Javě bavíme o HTML? Já zatím dělal jenom přes IDE, a nepotřeboval jsem nějak "zvlášť kompilátor", nebo o čem je tu teď řeč? A tak dále, a tak dále... Pak ten kód, ano, je to docela dobře popsáno, ale je to docela rychlé. Trochu mi to připomíná rádoby tutoriály tipu "Tady máš kód, kterej takhle funguje a na víc se neptej", ano, nemyslel jsi to jako návod, ale takhle jsi to prezentoval, popsal jsi to, aby si to mohl zkusit. A pak by se měl zase vrátit zpět na nulu? Když už si něco zkusil a vytvořil si takové "mikronávyky"? Právě proto jsou zdejší tutoriály poněkud pomalé, ano, pro pokročilejší programátory nudné, ale pro začátečníky výborné podle hesla "dvakrát měř, jednou řež", spíš si to opravdu vyzkoušejí podle tutoriálu víckrát, a opravdu pochopí, jak to funguje, co za tím je, proč píšeme každou jedinou řádku kódu, proč něco nevynecháváme apod... Pak je schopen programátor programovat sám od sebe, plně. No, trochu jsem se rozepsal, jak jsem řekl na začátku prvního příspěvku, nebere to jako hate, jenom doporučení pro příště, nězapomeň, že programátoři s dlouholetou praxí vidějí věci už trochu jinak, nesmíme zapomenout, že právě programováním se docela mozek pro tuto činnoust vytřibuje, a mění svůj způsob uvažování, je poměrně těžké myslet tím "normálním" způsobem a přesto zachovat vše, co nám ten "náš" způsob umožňuje... Teď samozřejmě záleží na autorovi, jestli se ještě vyjádří, co je pro něj lepší, nechci tu způsobit flame a zamknutí tématu jenom kvůli dvou offtopicařům, kteří se nedokáží dohodnout na správném postupu výuky :)

 
Nahoru Odpovědět 12. září 22:55
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:

Tak jelikož strukturální programování je zastaralé a všichni žádají OOP, tak promiň, že to beru jako samozřejmost:)
A jinak ta tvá teorie o začátečnících :D:D Řeknu ti to takhle - developera, kterého k tomu chceš nutit nebo mu vše strkat pod nos, jaká asi čeká budoucnost? bude někde upravovat wordy podle šablony-.- Nevím popravdě o co ti jde - já mu tady konkrétně ukázal příklad (jednu z možností) jak by to šlo. (a třeba konrktétně ten BlueJ jsem nijak nerozváděl - napsal jsem, že je to nějaké IDEčko;) )

A k těm toturiálům - nevím co říkám proti nim třeba ve větě:

Ahoj, jdeš na to trošku blbě. Nic proti těmto stránkám, sám je doporučuji a jsem rád, že se tady můžu zapojit do různých komentářů.

v článku: http://www.itnetwork.cz/…7c573e9e0a90

Já tyto stránky maximálně uznávám a věř, že sem stejně tak rád napíšu radu, jako ticket o pomoc (bohužel, když já něco potřebuju, tak je to tak těžce specifická věc, že to tu málo kdy někdo řekne:( ) a jedinou výhradu, co k těm stránkám mám (konkrétně Java), že už od začátku porušují pravidlo zapouzdření. Není to nic tak nepochopitelného, ale vychovají v tomto nechutné zlozvyky. Kdo má pak ty kódy číst!!! Ale jak říkám, to je jediná moje kritika, jinak takřka v každém komentu ohledně stránek vyjadřuju maximální podporu, protože je to velmi dobře rozjeté!!

A jen taková malá otázečka - v čem je FX výhodnější, než-li Swing? Umím s oběma balíky, ale je pro mě daleko jednodušší a víc efektivnější Swing. To bys mi mohl tedy prozradit, o tom, že se od toho upadá slyším/čtu prvně:O

A na závěr (definitivně, už se vyjadřovat pak nebudu). Každý má svůj způsob učení, o tom se snad nebudeme bavit.
Ale! s velkým A:

  1. když ho budeš od začátku učit věci, které se bude v každé 7. lekci přeučovat, bude v tom mít větší guláš, než postupně
  2. nejvíc se naučíš právě ze vzorů zkušenějších programátorů (vidíš výsledek, kterého chceš dosáhnout) (a to zas se vší pokorou říkám, že ten můj kód nebylo nic extra, byla to (jak už jsem řekl) jedna z možných ukázek!) Tys mu zas radil konfigurovat soubory - taky perfektní pecka pro začátečníka, který je rád, že mu funguje Hallo world:)

no a za c) ještě jednou jsem se díval na ten můj "výtvor". Když k tomu budu třeba 20minut číst ten text :) (ano já su spammer), tak nevidím sebemenší problém, co by tam mohl někdo s tím mít. Nic tam nikterak nerozvádím, jen jsem podotkl, že je to potřeba a odkázal ho na (a teď se podrž) I ZDEJŠÍ toturiály;)

Nahoru Odpovědět 12. září 23:15
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Lubor Pešek
pocitac770:

K tomu JavaFX, nevím, jestli je to přesně to, co jsem myslel (viděl jsem to ještě v trochu jiném změní), jde o oficiální názor Oracle, například co jsem za tu chvíli vygooglil:

6. Is JavaFX replacing Swing as the new client UI library for Java SE? Yes. However, Swing will remain part of the Java SE specification for the foreseeable future, and therefore included in the JRE. While we recommend developers to leverage JavaFX APIs as much as possible when building new applications, it is possible to extend a Swing application with JavaFX, allowing for a smoother transition.

K tomu, co jsem řekl o tobě, neodkazuji na specifiká témata, jde totiž jenom o takový ten "pocit", již jsem na těchto stránkách nějaký ten pátek a mám přehled o některých uživatelích, kteří sem tam něco přispějí, třeba jsem si tě spletl ještě s někým jiným, ale usuzoval jsem podle profilovky a podle.... úrovně znalostí, pokud to tak můžu říci. Konfigurace souborů? Opět nemám nejmenší tušení, o čem teď mluvíš, asi patřím mezi ty terminologicky neznalé.. pokud jde o ten linux, tak to už znám z podstaty začátečnického používání, že jakmile si chci spustit nějaký script, tak při dvojkliku nastane problém, jenom předávám zkušenost se štvaním (to on na mě vychrlil linux, což jsem ani nečekal, ale nějakou tu odpověď jsem pro něj v hlavě a virtualboxu našel) :D

Editováno 12. září 23:36
 
Nahoru Odpovědět 12. září 23:36
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 16 zpráv z 16.