NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Kód který se spustí před ukončením aplikace uživatelem

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Neaktivní uživatel:12.7.2017 21:14

Dobrý den, nevíte někdo jak udělat aby před ukončením aplikace (vykřížkování uživatelem) aplikace spustí nějaký kód? (např.: ts3 pokud jste ve místnost a vykřížkujete ho tak před ukončením řekne disconnected from the channel a až pak se zavře, nebo spousta her po vykřížkování spustí launcher...)

Odpovědět
12.7.2017 21:14
Neaktivní uživatelský účet
Avatar
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na Neaktivní uživatel
Atrament:12.7.2017 23:05

Předpokládám, že mluvíš o aplikaci napsané pomocí Swingu a o okně vytvořeném pomocí JFrame. Nejprve musíš zakázat, aby se okno vůbec dalo 'křížkem' zavřít, takže někde v inicializaci toho JFrame udělej:

setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

dále pak potřebuješ odchytit tu událost, kdy se někdo pokusí okno zavřít, ať už pomocí 'křížku' nebo i pomocí nějaké klávesové zkratky. To se dělá tak, že opět do inicializace JFrame přidáš WindowAdapter s overridnutou metodou windowClosing:

addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
    //Tady dej kód co se má spustit, když se někdo pokusí zavřít okno
    }});
 
Nahoru Odpovědět
12.7.2017 23:05
Avatar
Odpovídá na Atrament
Neaktivní uživatel:12.7.2017 23:10

Hele sorry jsem úplnej noob co je Swing a JFrame?

Nahoru Odpovědět
12.7.2017 23:10
Neaktivní uživatelský účet
Avatar
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na Neaktivní uživatel
Atrament:12.7.2017 23:12

Aha to seš hádám na špatným fóru, tady se diskutuje o programování v Javě :)

 
Nahoru Odpovědět
12.7.2017 23:12
Avatar
Odpovídá na Atrament
Neaktivní uživatel:12.7.2017 23:15

no taky že jo: jak naprogramovat aplikaci v jave která před zavřením vykoná nějakou část kódu

Nahoru Odpovědět
12.7.2017 23:15
Neaktivní uživatelský účet
Avatar
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na Neaktivní uživatel
Atrament:12.7.2017 23:21

No ale pokud nevíš co je Swing a JFrame, tak by ses nejprve asi měl ptát jenom: jak naprogramovat aplikaci v Javě :) A na to tu máme <a href='https:/­/www.itnetwor­k.cz/java/swin­g'>šikovný seriál.</a>

 
Nahoru Odpovědět
12.7.2017 23:21
Avatar
Neaktivní uživatel:12.7.2017 23:40

Dobře nějak jsem si projel první tři epizody á... co je inicializace JFrame? tak nějak nepobírám to slovní spojení

Nahoru Odpovědět
12.7.2017 23:40
Neaktivní uživatelský účet
Avatar
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na Neaktivní uživatel
Atrament:13.7.2017 6:19

Inicializace = nastavení počátečních hodnot. Prostě to místo v programu, kde píšeš co má JFrame obsahovat, případně jak má vypadat - typicky konstruktor a nebo metoda volaná v konstruktoru.

 
Nahoru Odpovědět
13.7.2017 6:19
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Atrament
Lubor Pešek:14.7.2017 19:16

inicializace není nastavení:) když už, tak to mají nejvíc na starost přístupové metody.
inicializace znamená vytváření nové instance třídy.

Nahoru Odpovědět
14.7.2017 19:16
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
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na Lubor Pešek
Atrament:14.7.2017 22:06

To je instanciace

 
Nahoru Odpovědět
14.7.2017 22:06
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Atrament
Lubor Pešek:14.7.2017 22:19

:D a takový výraz si vzal kde?:D
zkus si to jen z prdele dát do googlu:D

Editováno 14.7.2017 22:19
Nahoru Odpovědět
14.7.2017 22:19
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
Atrament
Člen IT Redactor Gang
Avatar
Avatar
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na Lubor Pešek
Atrament:14.7.2017 22:32

Když vytváříš instanci třídy, jde o instanciaci, tento výraz se v češtině nepoužívá sice moc často ale google vrací pár výsledků a v angličtině je úplně běžný:) Když chceš tomuto vytvářenému objektu nastavit nějaké počáteční hodnoty provádíš jeho inicializaci... Odkazu výše si nevšímej, chtěl jsem původně odkázat na anglickou verzi kde je ten výraz jasně použit a nějak jsem to zkonil :) https://en.wikipedia.org/…uter_science)

 
Nahoru Odpovědět
14.7.2017 22:32
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Atrament
Lubor Pešek:15.7.2017 0:51

ok, tak proč teda java bere jako instancializovaný objekt dejme tomu například už jen při vytvoření (PRÁZDNÉ) kolekce?

ArrayList<Object> arrayOfObjects = new ArrayList<>();

a že bych této instanci nastavoval nějaká data, to se mi fakt nezdá

PS: mrkni ještě jednou na ty odkazy, nevím jestli jenom mě, ale ta anglická verze nějak nic nenachází:)
a ještě malinkatý doplněk - ohánět se wikinou, kór při správné syntaxi není moc dobrý nápad:) Na wikinu píše tolik volů takové nesmysli... už jsem se tam i dočetl, že třeba 2. světovou válku vyhráli američané za pomocí Britů:D
Takže wikina není zrovna to pravé ořechové

Nahoru Odpovědět
15.7.2017 0:51
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:15.7.2017 1:13

A jestlis myslel zrovna toto....

https://en.wikipedia.org/…uter_science)

tak popravdě co to čtu, tak v každém odstavci vidím plno nesmyslů (i z pohledu Javy)
tak například:

...object, existing usually during the runtime of a computer program

když už, tak Java jako taková nepracuje ani s procesy systému, ale přes JVM pracuje s vlákny. "computer program" svědčí o profesionalitě článku;)

The creation of an instance is called instantiation

radši bez komentáře, to je možná ten výkvět, ze kterého ty prameníš

objects are created from classes by subroutines called constructors

já ti čoveče nevím, ale není náááhodou konstruktor vyjímečný případ metody (funkce), jehož návratový typ není uveden, protože ve své podstatě vrací instanci třídy? tato věta je pěkná blbost

> and destroyed by destructors
uznávám, že tam žvatlají obecně o instanci, ale aspoň tam mohli dát krátkou větičku, že Java něco jako destruktor nemá. Ta přišla s GC a teď se to snaží zavést všechny OOP jazyky. Zbytek odstavce nemá cenu komentovat, stejně tam nic podstatného neříká, ani kdyby použil správnou terminologii

Each time a program runs, it is an instance of that program

jak je teda možné, že program může pracovat s několika instancemi?:D takto to položit začátečníkům a mají z toho v hlavě maďarský guláš

An important distinction is between the data type, which is interface, and the class, which is implementation.

mě jebne....

The meaning of the term "type" in computer science is rather similar to the meaning of the word "type" in everyday language. For example, a barman can ask a client what type of beverage does he or she want – coffee, tea or beer?

Tak tohle je nejlepší ukázka příkladu datových typů, jakou jsem kdy viděl. Když už pominu že by všechny chlasty, co tu uvedl/a mohli být objektového datového typu třeba Drink, není přece jen lepší uvádět a pracovat ze začátku s primitvními datovými typy? to že se to nějak dělí, to tam vůůůůbec není ani zmíněné.

Prostě wikina není relevantní zdroj. Konkrétně autor tohoto článku si zjistil pár termínů, ještě je zkomolil a dal je k sobě tak, jako největší čuně.

Na takovýto článek platí krásná věta:
Nepužívejte odborové termity, abyste při jejich nekorektních uskutečnění nevyzařovali jako obrovští dominogové.

Editováno 15.7.2017 1:16
Nahoru Odpovědět
15.7.2017 1:13
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
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na Lubor Pešek
Atrament:15.7.2017 8:00

Ve své rádoby kritice wikipedie cituješ věty vytržené z kontextu, přičemž následně píšeš úplně o něčem jiném, jenom abys zněl chytře a kriticky... například hned ten první skvost:
>>když už, tak Java jako taková nepracuje ani s procesy systému, ale přes JVM pracuje s vlákny.
Jak to souvisí s tou větou, kterou jsi citoval?

Jinak z wikipedie pojem instanciace určitě nemám, jsem si jistý že jsem ho viděl používat a sám jsem ho používal dávno před tím než vůbec nějaká wikipedie existovala. Jak jsem psal vídávám ho mnohem častěji v angličtině, ale existuje a používá se i v češtině. Zkusil jsem si co jsi mi navrhoval a zadal jsem ten pojem do google.
Namátkou prvních pár relevantních:

http://ktiml.mff.cuni.cz/…viceni05.pdf
http://www.fit.vutbr.cz/…rants.php.cs?…
https://www.fi.muni.cz/…-handout.pdf

Takže místo švejkování a plané snahy dokazovat mi, že ten výraz neexistuje, by ses mohl pochlapit a přiznat si žes ho prostě neznal :)

 
Nahoru Odpovědět
15.7.2017 8:00
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Atrament
Lubor Pešek:15.7.2017 17:41

ok, tak fajn... tak polopatě i pro tebe...
Každý program má svůj proces. Systém jako takový pracuje s procesy. Když tam hnětli tu blbost o běhu programu, tak jsem předpokládal, že toto víš i ty. Zmílil jsem se, omlouvám se a příště to budu rozepisovat do detailů, abys to pochopil i ty.

Jestli teda není jen na wikině, tak mi prosím pošli ten odkaz. Já to čoveče fakt nemůžu nějak najít

k těm tvým odkazům:D
http://ktiml.mff.cuni.cz/…viceni05.pdf - Instanciace promnných (excelentní:D) proměnná je dokonalý příklad instance:D
a v těch druhých dvou si zkus zas namátko vyhledat termín inicializace - vůbec ho ani nepoužívají. Tudíž soudím jasná záměna.

A máš pravdu, takový výraz jsem nikdy neslyšel ani v práci, ani ve škole ani tady na networku a čoveče na žádném jiném foru:D
Ale nechám tě v tom, říká se, že když se s blbem hádáš víc jak dvě minuty, si sám blb a já nemám fakt sebemenší důvod ani chuť dokazovat ti, že je to zkomolenina, kterou nikde nenajdeš (v žádné literatuře a v 99% webů. To 1% je nejspíš zapříčiněno tím, že jsi tam přispíval ty sám)
čus a mysli si třeba, že jsi vyhrál:D ale prosím tě, neval takovéto sračky nováčkům do hlavy. Jen je zblbneš

Nahoru Odpovědět
15.7.2017 17:41
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
Atrament
Člen IT Redactor Gang
Avatar
Atrament:15.7.2017 17:49

Takže články tady na itnetwork, kde je tento pro tebe neexistující pojem použit:

https://www.itnetwork.cz/…-konstruktor
https://www.itnetwork.cz/…ail-produktu
https://www.itnetwork.cz/…ni-operatoru
https://www.itnetwork.cz/…-konstruktor

Tímto s tebou tuto planou diskusi končím, sám jsi ničím k původnímu dotazu nepřispěl, jenom jsi tu přišel předvést svoji aroganci a neznalost, takže tě prosím - příště se do diskuse nezapojuj pokud nemáš nic k tématu.

 
Nahoru Odpovědět
15.7.2017 17:49
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 18 zpráv z 18.