Java kompilácie a build v príkazovom riadku - GUI, balíček
V tomto Java tutoriále si vykonáme rozšírenie základných znalostí, ktoré sme sa predviedli v predchádzajúcej lekcii Java kompilácie a build v príkazovom riadku - Základy. V prvej časti si predvedieme primitívne GUI aplikáciu, v druhej časti vykonáme vytvorenie aplikácie, ktorá obsahuje spúšťací triedu v balíčku (package).
Počítam, že máte nastavené PATH do adresára v Jave, kde sa nachádzajú príslušné programy (java, javac, apod ..).
Vytvorenie GUI aplikácie
Čo bude obsahom GUI aplikácie? Nič výnimočné, vytvoríme si okno, nastavíme mu nejaké parametre (polohu a veľkosť), vložíme do neho tlačidlo a nastavíme mu udalosť. Udalosť bude iba zobrazovať MessageBox.
Takže opäť spustíme príkazový riadok a prevedieme analogický postup
ako v predchádzajúcom diele. Za pomocou príkazu md ProgramGUI
vytvoríme adresár ProgramGUI
. Po vykonaní sa doň presunieme cez
príkaz cd ProgramGUI
. V adresári potom vytvoríme zdrojový
súbor cez príkaz fsutil file createnew ProgramGUI.java 0
. Ďalej
vykonáme úpravu zdrojového súboru cez príkaz
notepad ProgramGUI.java
, vložíme kód nižšie, súbor uložíme
a notepad ukončíme.
D:\ └── ProgramGUI └── ProgramGUI.java
Swing
Pre staršie Swing framework by zdrojový kód vyzeral takto:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ProgramGUI { public static void main(String[] args) { JFrame okno = new JFrame("Nase okno"); okno.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent arg0) { System.exit(1); } }); okno.setSize(600,400); okno.setLocation(500,300); okno.getContentPane().setBackground(Color.cyan); okno.setLayout(null); JButton tlacitko = new JButton("Stiskni me"); tlacitko.setBounds(200, 80, 200, 200); tlacitko.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JOptionPane.showMessageDialog(okno,"Dobry den"); } }); okno.add(tlacitko); okno.setVisible(true); } }
JavaFX
Ak chceme vyskúšať JavaFX, tak tu je podobný program napísaný v JavaFX bez MVC (FXML).
Tento zdrojový kód bude fungovať len u Java10, 09, 08. U Java11 a vyšších je JavaFX odobraná z JDK a je nutné používať externé knižnice (framework)
import javafx.application.*; import javafx.event.*; import javafx.geometry.Pos; import javafx.scene.*; import javafx.scene.control.*; import javafx.scene.control.Alert.AlertType; import javafx.scene.layout.*; import javafx.stage.Stage; public class ProgramGUI extends Application { private Scene scene; public static void main(String[] args) { Application.launch(args); } public void start(Stage stage) throws Exception { Button tlac = new Button("Stiskni mě"); tlac.setPrefSize(200,100); tlac.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent ae) { Alert alert = new Alert(AlertType.INFORMATION); alert.setTitle("Pozor"); alert.setContentText("Dobry den"); alert.show(); } }); FlowPane flowpane = new FlowPane(10,10); flowpane.setAlignment(Pos.CENTER); flowpane.setStyle("-fx-background-color: rgb(193, 122, 68)"); flowpane.getChildren().add(tlac); scene = new Scene(flowpane, 500, 250); stage.setScene(scene); stage.setTitle("Nase Okno"); stage.show(); } }
Ako ďalší krok vykonáme opäť kompiláciu zdrojového kódu do
bytekódu. Toho opäť docielime cez príkazový riadok príkazom
javac ProgramGUI.java
. Kompiláciou vznikne súbor
ProgramGUI.class
a pretože v kóde máme nejaké udalosti, ktoré
riešime cez anonymné triedy, vzniknú nám tam ešte ďalšie triedy
ProgramGUI$1.class
, ProgramGUI$2.class
ktorý
obsluhujú danej udalosti.
D:\ └── ProgramGUI ├── ProgramGUI$2.class ├── ProgramGUI$1.class ├── ProgramGUI.class └── ProgramGUI.java
Teraz nám ostáva len daný zdrojový kód spustiť. To docielime príkazom
java ProgramGUI
. Ako vidíte, všetko funguje.
Jar
Teraz nás čaká tvorba jar súboru. Ako prvý krok si vytvoríme súbor
manifestu. Ten vytvoríme cez príkaz
fsutil file createnew manifest.man 0
. Ďalej vykonáme úpravu
daného manifestu cez príkaz notepad manifest.man
, vložíme kód
nižšie, súbor uložíme a notepad ukončíme.
Manifest-Version: 1.0 Main-Class: ProgramGUI Created-By: 1.8.0_144 (Oracle Corporation)
Teraz vykonáme build čiže vytvoríme * .jar súbor. Vykonáme príkaz
jar cmf manifest.man Program.jar *.class
. Ako vidíte, vytvorili
sme Program.jar
. Teraz si daný program spustíme. Pretože to je
GUI aplikácia, možno ju spustiť double-CLIK. Program.jar
teda
presuňte na plochu (Desktop) a dvakrát kliknite. Všetko by malo
fungovať.
D:\ └── ProgramGUI ├── manifest.man ├── Program.jar ├── ProgramGUI$2.class ├── ProgramGUI$1.class ├── ProgramGUI.class └── ProgramGUI.java
Samozrejme spustenie je možné vykonať aj cez príkazový
riadok. Ide to buď ako java -jar Program.jar
alebo ako
java -cp Program.jar ProgramGUI
.
Vytvorenie aplikácie s balíčkom (package)
Bude sa jednať prakticky o samospustiteľný (runnable) jar ako v predchádzajúcom článku (diele), avšak príklad bude mať spúšťací triedu v balíčku (package). Čím väčšia programy budete robiť, tým skôr zistíte, že systém balíčkov je nevyhnutný a pomáha vám v prehľadnosti projektu. Náš príklad kvôli zjednodušeniu využíva iba jeden balíček, ale ak ich budete mať 10, 100, 1000, ... je len na vás. Riešenie je analogické.
D:\ └── ProgramPackageJAVA └── balicek └── ProgramBalicek.java
Potom, čo sme si spustili príkazový riadok, si vytvoríme v akejkoľvek
adresári zdrojový súbor, kde bude zdrojový kód uložený (napr.
ProgramJava.java
). Za pomoci príkazu
md ProgramPackageJAVA
vytvoríme adresár
ProgramPackageJAVA
. Po vykonaní sa doň presunieme cez príkaz
cd ProgramPackageJAVA
. V tomto adresári vytvoríme ďalší
podadresár, ktorý bude predstavovať baličiek (package) a to príkazom
md balicek
. Po vykonaní sa doň presunieme cez príkaz
cd balicek
. V adresári potom vytvoríme zdrojový súbor cez
príkaz fsutil file createnew ProgramBalicek.java 0
. Ďalej
vykonáme úpravu zdrojového súboru cez príkaz
notepad ProgramBalicek.java
, vložíme kód nižšie, súbor
uložíme a notepad ukončíme.
package balicek; public class ProgramBalicek { public static void main (String [] args) { System.out.println("Ahoj program z Javy s balickem"); } }
Pred kompiláciou sa presunieme o úroveň vyššie príkazom
cd ..
. Teraz vykonáme kompiláciu cez príkazový riadok
príkazom:
javac balicek\*.java`
Kompiláciou vznikne súbor ProgramBalicek.class
. Teraz nám
ostáva len daný zdrojový kód spustiť.
D:\ └── ProgramPackageJAVA └── balicek ├── ProgramBalicek.class └── ProgramBalicek.java
To docielime príkazom java balicek.ProgramBalicek
. Ako vidíte,
všetko funguje.
Teraz nás opäť čaká tvorba spustiteľného jar súboru.
D:\ └── ProgramPackageJAVA ├── manifest.man └── balicek ├── ProgramBalicek.class └── ProgramBalicek.java
Vytvoríme si súbor manifestu cez príkaz
fsutil file createnew manifest.man 0
. Ďalej vykonáme úpravu
daného manifestu cez príkaz notepad manifest.man
, vložíme text
nižšie, súbor uložíme a notepad ukončíme.
Manifest-Version: 1.0 Main-Class: balicek.ProgramBalicek Created-By: 1.8.0_144 (Oracle Corporation)
Teraz vykonáme build čiže vytvoríme * .jar súbor. Vykonáme príkaz:
jar cmf manifest.man ProgramBalicek.jar balicek\*.class
Ako vidíte, vytvorili sme ProgramBalicek.jar
.
D:\ └── ProgramPackageJAVA ├── ProgramBalicek.jar ├── manifest.man └── balicek ├── ProgramBalicek.class └── ProgramBalicek.java
No a teraz si daný program spustíme. Spustenie v príkazovom riadku ide
buď pomocou java -jar ProgramBalicek.jar
alebo ako
java -cp ProgramBalicek.jar balicek.ProgramBalicek
.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkamiStiahnuté 533x (5.74 kB)