IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.

Diskuze: Nová stage

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

Aktivity
Avatar
Petr Kasnal
Člen
Avatar
Petr Kasnal:17.2.2017 15:06

Ahoj, prosím o rychlou pomoc. Mám program, který je fullscreen. Potřebuji otevřít novou stage to není problém jenže po jejím otevření se program minimalizuje... Předem děkuji za odpověď :)

 
Odpovědět
17.2.2017 15:06
Avatar
Odpovídá na Petr Kasnal
Petr Štechmüller:17.2.2017 15:07

Ahoj, to je standartní chování oken. Pokud máš něco fullScreen, tak nemůžeš mít jiné okno, které by dokázalo ten fullScreen překrýt.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
17.2.2017 15:07
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Petr Štechmüller
Petr Kasnal:17.2.2017 15:10

Moc děkuji za odpověď. Já nepotřebuju aby se to nové okno otevřelo ve fullsreenu je to okno kam se jenom zadají potřebné hodnoty :) Takže potřebuji aby se to okno otevřelo "na tom" fullscreenu jakože předním. Možná si na to odpověděl jenom se ujišťuji že jsem to napsal aspon trochu pochopitelný :D A pokud si to pochopil opravdu to nějak nejde ?

 
Nahoru Odpovědět
17.2.2017 15:10
Avatar
Odpovídá na Petr Kasnal
Petr Štechmüller:17.2.2017 15:13

Takže potřebuji aby se to okno otevřelo "na tom" fullscreenu jakože předním.

Podle mě to není možné. Třeba se pletu a někdo mě opraví.

Nahoru Odpovědět
17.2.2017 15:13
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Odpovídá na Petr Štechmüller
Erik Šťastný:17.2.2017 15:15

Taky se domnívám, že to nejde, řešení je používat dnes oblíbené bezokrajové okno, které vypadá jako fullscreen, používám to v každé hře, které to podporuje, právě z důvodu, že ho lze překrýt bez minimalizace toho předchozího :)

 
Nahoru Odpovědět
17.2.2017 15:15
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Erik Šťastný
Petr Kasnal:17.2.2017 15:19

A jk se to bezokrajové okno jmenuje prosím ?

 
Nahoru Odpovědět
17.2.2017 15:19
Avatar
Odpovídá na Petr Kasnal
Erik Šťastný:17.2.2017 15:21

Přímo v nějakém Java frameworku ti to neřeknu. Ale hledej pojem "borderless window"

 
Nahoru Odpovědět
17.2.2017 15:21
Avatar
Odpovídá na Petr Kasnal
Petr Štechmüller:17.2.2017 15:25

Pokud jedeš JavaFX, tak při inicializace stage můžeš použít tento kód:

primaryStage.initStyle(StageStyle.UNDECORATED)

Tím zlikviduješ veškerý rámeček okna a zruší se tím i tlačítka pro minimalizaci, maximalizaci a konec

Nahoru Odpovědět
17.2.2017 15:25
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Erik Šťastný
Petr Kasnal:17.2.2017 15:36

Hele tk jsem to našel ale stejně to nefunguje...

 
Nahoru Odpovědět
17.2.2017 15:36
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Petr Štechmüller
Petr Kasnal:17.2.2017 15:37

Ano přesně todle jsem použil ale i přes to se mi program minimalizuje....

 
Nahoru Odpovědět
17.2.2017 15:37
Avatar
Odpovídá na Petr Kasnal
Petr Štechmüller:17.2.2017 15:38

Tohle ale nezabrání minimalizaci, jenom upraví vzhled okna.

Nahoru Odpovědět
17.2.2017 15:38
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Petr Štechmüller
Petr Kasnal:17.2.2017 15:41

No já bych potřeboval aby se program neminimalizoval když to okno otevřu

 
Nahoru Odpovědět
17.2.2017 15:41
Avatar
Odpovídá na Petr Kasnal
Erik Šťastný:17.2.2017 15:43

Podle dokumentace

StageStyle.UNDECORATED

To že z okna odstaníte tydle věci nemá nic společného s tím aby ho Windows bral jako Bezokrajové okno. podle prvních pár linků na googlu to prý JavaFX neumí :) A mnoho lidí na to používá Swing, ale třeba to není pravda.

 
Nahoru Odpovědět
17.2.2017 15:43
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Erik Šťastný
Petr Kasnal:17.2.2017 15:50

Hmm opravdu si stím nevím rady.... Jestli to v javafx neni tk je to naprd a zkusím to najít ve swingu :) Takže moc děkuji za rady

 
Nahoru Odpovědět
17.2.2017 15:50
Avatar
Atrament
Tvůrce
Avatar
Odpovídá na Petr Kasnal
Atrament:18.2.2017 22:25

Bereš to za špatný konec, nepotřebuješ novou stage ale pouhý Dialog, který bude potomkem té tvé fullscreen stage. Potom se ti ta stage nebude minimalizovat. Bohužel teď nemohu poskytnout konkrétní ukázku kódu, jsem v procesu stěhování a počítač je v krabici:) (píšu z mobilu).

 
Nahoru Odpovědět
18.2.2017 22:25
Avatar
Atrament
Tvůrce
Avatar
Odpovídá na Petr Kasnal
Atrament:19.2.2017 9:53

Takže abych to doplnil:

<a href='http://­code.makery.ch/blog/ja­vafx-dialogs-official/'>Tady je moc pěkný průvodce Dialogy, které JavaFX podporuje</a> Tebe zřejmě bude zajímat Text Input Dialog a nebo Custom Login Dialog, ale princip je prakticky stejný u všech typů Dialogů, takže v rámci zachování co největší jednoduchosti ukážu na Alertu :)

Předpokládejme, že máš instanci Stage nazvanou stage. Vytvoř si instanci Alertu nazvanou prostě alert:

Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Upozornění");
alert.setContentText("Hello fullscreen world");

Dále přepokládejme, že máš ve stage tlačítko Button nazvané button a chceš aby se alert ukázal, když na něj uživatel klikne.

button.setOnAction((ActionEvent event) -> {
    alert.showAndWait();
});

Teď se ti sice alert otevře, ale vlastní stage se minimalizuje. Tomu se snadno zabrání tím, že se alert nastaví jako 'majetek' (v předchozím postu jsem nepřesně psal o potomkovi) té stage:

alert.initOwner(stage);

Ale pozor je tam jedna vyfikundace - initOwner() je třeba volat AŽ POTÉ, co už bylo zavoláno show() na stage, jinak to spadne s InvocationTar­getException.

 
Nahoru Odpovědět
19.2.2017 9:53
Avatar
Petr Kasnal
Člen
Avatar
Petr Kasnal:20.2.2017 17:27

Strašlivě ti děkuji ! Přesně todle funguje i u Stage :) Fkt moc děkuju kdyby to šlo dal bych ti že si to vyřešil ty :D Moc děkuju :)

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