-
Notifications
You must be signed in to change notification settings - Fork 0
/
data.txt
29 lines (29 loc) · 15.5 KB
/
data.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Základy
Datové typy€Datové typy se dají vytvořit globálně, pro celý skript - dáme je mimo funkci, ale v classu,\nnebo jen jako lokální - vytvoříme je ve funkci\nMůžeme před ně přidat: static=nedá se změnit, public=veřejná (ostatní skripty),\nprivate=privátní (opak public)\nPozn. pokud dáme proměnnou do funkce, bude platit jen v té funkci\nBonus: System.out.println() - vypíše proměnnou, nebo nějaký text do konzole (testovací účely)\n\nint - čísla (omezeno, problém s necelými čísly)\nfloat - čísla\nboolean - ano/ne (true/false)\nBigDecimal - čísla (jiný zápis, používá se místo intu)\nJMenu - příklad použití tříd (JTextArea,...)\nString - text (pozor na " ")€static int cislo1 = 1;//static = už se nedá měnit\nprivate float cislo2 = 2;\nBigDecimal cislo3 = BigDecimal.valueOf(1);\n\nboolean jeAktivni = true;\nJMenu menu1;\n\nString text1 = "text";\nString text2 = ""; // prázdný string\nString text3 = null; //proměnná je prázdná\nString text4; //proměnná je bez dat\n\nSystem.out.println(nejakaPromenna); \n//Do konzole vypíše cokoliv co je v proměnné "nejakaPromenna"\n\nSystem.out.println(String.valueof(nejakeCislo); \n//Pokud je proměnná číslo, musíme převést data z čísel do textu
If, elseif, else€if - pokud\nelse if - nebo pokud (musí být za if)\nelse - jinak (za if, nebo else if)\n€//Přednastavím si proměnné\nstring text = "text";\nboolean jePravda = true;\nint pocet = 1;\n\n//Zjišťuju\nif(jePravda == true){ //nebo taky if(jePravda)\n //udelej neco\n}else if(text.equals("text"){ //Pozor, u stringu ne ==, ale .equals()\n//udelej neco\n}else if(pocet == 1){ //mensi nez <=, vetsi nez >=, nerovná se !=\n//udelej neco\n}else{\n//udelej neco\n}\n\n//Další tipy\nif(!jePravda){}//pokud jePravda = false,\nif(text!=null){}//pokud proměnná existuje)\nif(string.equals("")){}//pokud je string prázdný
Listy & Kontejnery€Kontejnery, nebo také ArrayListy, jsou listy dat, do kterých jde přidávat více\nproměnných stejného typu, při použití jednoho názvu\n\nPřed použitím kontejnerů se však do projektu musí přidat knihovna pro kontejnery\n(Buďto ručně, nebo když vytvoříme kontejner a přes něj pak přejedeme myší a v\nmenu pak vlevo dole vybereme "Import class")€import java.util.ArrayList; //Přidání knihovny do projektu\n\nArrayList<String> texty = new ArrayList<>(); //Definujeme kontejner\ntexty.add("Nějaký text"); //Přidá nový text do kontejneru\ntexty.remove(1); //Vymaže objekt 2 (ano 2, kontejnery začínají od 0!)\ntexty.remove("Nějaký text"); //Vymaže text který má tuto hodnotu\n\ntexty.clear(); //Vymaže všechny texty v kontejneru\nint velikostKontejneru = texty.size(); //nastaví do proměnné\n// počet textů v kontejneru\ntexty.get(1); //získá text z kontejneru, zase podle pořadí
Třídy€Třídy jsou velmi používané prvky jakéhokoli programovacího jazyka\nKaždá třída nese své parametry, funkce,...\nTřeba script, ve kterém pracujeme musí mít třídu€import java.swing.*\n\npublic MainFrame extends JFrame{\n //věci ve scriptu\n}\n\n//Používáme tvoření tříd - nové okno(JFrame), záznamy,...\nTestClass trida = new TestClass(String nejakyText); //v hlavním scriptu vytvoříme\n//novou třídu (udělá vše, co je definováno ve třídě samotné)\n\npublic TestClass(String text) {\n this.text = text; //takhle se např. dělají záznamy\n}\n
While & Foreach€While se používá ve smyslu while(podmínka), neboli "dokud"\nForeach se používá ve smyslu "pro každé"€while (chciPokracovat == true) {\n System.out.println("Pořád pokračuju"); //Dokud je chciPokracovat\n //true, bude psát "Pořád pokračuju" do konzole\n}\n\nfor (TestClass nejakyNazev : nazevKontejneru){\n System.out.println(nejakyNazev); //Pro každý prvek typu \n //TestClass v kontejneru nazevKontejneru vypíše název prvku\n //do konzole\n}\n
Ostatní€Ostatní základní komponenty v Javě:\n\npsvm - rychle vytvoříme public static void main(String[] args){}\n-->do této metody vložíme vše, co má být uděláno po spuštění aplikace\n(třeba MainFrame frame = new MainFrame(); pro vytvoření okna)\n\npackage - soubory se dají dát do balíčků, do místa, kam se dávají např.\nimport java.swing.*; se přidá např. \npackage com.example.hello; a složka se soubory projektu bude pod další \nsložkou com.example.hello (lze pak vidět v exploreru projektu - v IntelliJ vlevo)€package com.example.hello\nimport java.swing.*;\n\npublic MainFrame extends JFrame{\n public static void main(String[] args){} //zkratka psvm a tab\n}
$
Soubory
Scanner€Scanner se používá tehdy, kdy potřebujeme přečíst data ze souboru.\n\nMusíme psát do try(){}, protože můžou vzniknout chyby - ty vychytáme výjimkami -\nproto využijeme catch(){} (o nich bude zmínka později)\n\nBonus: využijeme .split(), abychom rozdělili data nějakým znakem, např. \njedna:dva:tři - .split(":") - jedna, dva, tři€String soubor = "data.txt";\nString radek;\n\ntry(Scanner scanner = new Scanner(new BufferedReader(\n new FileReader(soubor)))) {\n while (scanner.hasNextLine()) {\n radek = scanner.nextLine(); //nastavíme radek jako \n //další přečtený řádek - vždy se mění\n \n String parametry[] = radek.split(":"); \n // řádek rozdělíme znakem ":"\n // parametry[] je proměnná, která může mít více \n // proměnných stejného typu v jednom (podobně \n // jako ArrayList)\n \n informace1.add(parametry[0]);// přidáme 1. informaci\n //z řádku do kontejneru "informace1"\n informace2.add(parametry[1]);// přidáme 1. informaci\n //z řádku do kontejneru "informace2"\n }\n }catch (FileNotFoundException e){ //Vychytáme výjimky (chyby)\n throw new RuntimeException(e);\n }finally{\n //Co udělat, jakmile Scanner dokončí čtení souboru, nemusí být \n }
PrintWriter€PrintWriter se používá tehdy, kdy potřebujeme zapsat data do souboru.\n\nMusíme psát do try(){}, protože můžou vzniknout chyby - ty vychytáme výjimkami -\nproto využijeme catch(){} (o nich bude zmínka později)€String soubor = "data.txt";\n\ntry(PrintWriter writer = new PrintWriter(new BufferedWriter(\n new FileWriter(soubor)))) {\n \n //Sem dáme co chceme zapsat do souboru, např.\n writer.println("Nějaký text pro zápis do souboru");\n \n }catch (FileNotFoundException e){ //Vychytáme výjimky (chyby)\n throw new RuntimeException(e);\n \n }finally{\n //Co udělat, jakmile Scanner dokončí čtení souboru, nemusí být \n writer.flush(); //Vyčistí pamět PrintWriteru\n }
JFileChooser€JFileChooser používáme, když potřebujeme vybrat soubor např. pro Scanner nebo PrintWriter, abychom\nnemuseli ručně zadávat název souboru.€ //Všechen kód dáme tam, kde chceme aby se zobrazilo vyskakovací okno\n \n int result = chooser.showOpenDialog(this);\n //Otevře nové okno pro výběr souboru\n\n if(result == JFileChooser.APPROVE_OPTION){\n textFile = chooser.getSelectedFile(); \n //Nastaví vybraný soubor do File textFile\n \n System.out.println(textFile.getName());\n //Vypíše název souboru\n }
Výjimky€Výjimky v Javě používáme při užívání try(){}, což je např. při práci se Scannerem, nebo PrintWriterem\nVyužití výjimek - vychytávání chyb\nVždy je dáváme hned za try{}, do catch(){}€try{\n //Kód pro např. Scanner\n} catch (FileNotFoundException ex) { \n //sem zadáme kód, co má udělat když nenajde soubor\n System.out.println("Soubor nenalezen: " + ex); //ex vypíše specifickou chybu,\n //ale program bude dál pokračovat\n \n} catch (IOException ex) { \n //sem zadáme kód pro IOException\n throw new RuntimeException(ex); //Zastaví kód a vypíše chybu\n\n \n} catch (InputMismatchException ex) { \n //sem kód, pokud dojde k prohození \n //datového typu (např. očekáván int, získán string)\n\n throw new MojeVyjimka("Narazili jsme na chybu v datovém typu!");\n //Náš vlastní typ výjimky, kódujeme si ji sami (viz další lekce)\n\n \n} finally {\n sc.close(); //Ukončíme scanner (nemusí být)\n}\n
Vlastní výjimky€Vlastní výjimky si můžeme vytvořit jednoduše sami a sami taky můžeme rozhodnout, co má udělat\nK vytvoření vlastních výjimek je ale zapotřeba udělat nová třída, kterou budeme volat€//Jiný soubor, než ve kterém máme kód pro program (pojmenovaný Error.java)\npublic class Error extends Exception{\n public Error(String errorMessage){ //Získá text výjimky\n super(errorMessage); //Otevře nové okno s tlačítkem OK a se zadaným textem\n }\n}\n\n//Soubor, ve kterém máme kód pro projekt\ntry(){\n //Kód pro např. Scanner\n}catch(FileNotFoundException ex){\n throw new Error("Soubor nenalezen"); //zavolá naši výjimku\n //s textem "Soubor nenalezen"\n}\n
$
Rozhraní
Základy€Rozhraní je jednou z důležitějších částí práce s Javou, nebo jakýmkoli jiným programovacím jazykem.\n\nAbychom i my mohli začít pracovat s rozhraním, musíme vytvořit nový soubor v knihovně - \nklikněte na src -> New -> SwingUIDesigner -> GUI Form , pojmenujte a vytvoří se 2 soubory pod\nrodičovským objektem (rozklikněte).\n\nJeden pro designování rozhraní a druhý pro kód pro toto rozhraní - sem\nbudeme psát všechen kód programu.\n\n1. musíme přidat knihovnu swing a pridat extends do classu€import javax.swing.*;\n\npublic class MainFrame extends JFrame { //MainFrame jsou soubory s rozhraním\n private JPanel mainPanel;\n \n public static void main(String[] args) {\n MainForm mainForm = new MainForm(); //Vytvoří nové okno\n mainForm.setSize(200,150); //Nastaví velikost okna\n mainForm.setVisible(true); //Nastaví, aby okno šlo vidět\n mainForm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n //Co má udělat pri stisknutí X (zavření okna)\n }\n\n public MainForm(){\n setTitle("Můj první GUI projekt");//Nastaví název okna (ten vlevo nahoře)\n setContentPane(mainPanel);//nastaví, který panel má být zobrazen\n //(už bude ve .form souboru předchystán, je třeba ho ale přejmenovat\n }\n \n //kód pro práci s programem\n}
JTextArea, JTextField, JLabel€JLabel - text jen pro zobrazení - nelze do ní psát\nJTextField - uživatel sem může psát text (do jednoho řádku)\nJTextArea - uživatel sem může psát text (do více řádků)\n\n- Do všech můžeme nastavovat text sami kódem€//Nejdříve vložíme elementy do našeho .form souboru, abychom \n//elementy nemuseli generovat v kódu\nJTextArea text1;\nJTextField text2;\nJlabel text3;\nJTextField text4;\n\nvoid setSomeText(String nastavTentoText){ //metoda, která nastaví text našich polí\n this.text1.setText(nastavTentoText); //nastaví text\n this.text2.setText("Jiný \ ntext");//nastaví jako "Jiný" <nový řádek> "text"\n //Ve vašem kódu použijte \ n bez mezery!!!\n this.text3.setText("");//text3 bude prázdný\n \n this.text4.setText(text2.getText());//v text4 bude to samé jako v text2\n\n this.text2.setEnabled(false); //nastavíme, aby do text2 nešlo psát \n}\n\npublic MainFrame(){ //tady zavoláme tu metodu s textem\n setSomeText("Text k zobrazení");\n}\n
JCheckbox, JRadioButton€Checkboxy používáme, pokud chceme zaškrtnou možnost (ano, ne)\n\nRadioButtony používáme, když potřebujeme vybrat jednu z více možností€//Zase všechny nejdříve umístíme v .form souboru a pojmenujeme\nJCheckBox jeSplneno;\nButtonGroup vyber;\nJRadioButton prvniRB;//Musí být pod ButtonGroup v .form souboru\nJRadioButton druhyRB;//Musí být pod ButtonGroup v .form souboru\n\npublic MainFrame() {\n this.jeSplneno.setSelected(true); //sami nastavíme, aby byl checkbox "ano"\n this.prvniRB.setSelected(true); //nastaví prvniRB na "ano" a všechny ostatní\n //radio buttony v ButtonGroup na "ne"\n\n checkBox.addItemListener(e ->{ //Co má checkbox udělat, když na něj\n //uživatel klikne\n if (e.getStateChange() == ItemEvent.SELECTED) {\n System.out.println("Je vybrán");\n } else {\n System.out.println("není vybrán");\n }\n });\n \n if(this.jeSplneno.isSelected(){\n System.out.println("Checkbox je zatržen");//Zjistí jen při\n //spuštění aplikace!\n }\n}
JButton€Tlačítka se používají podobně, jako checkboxy, ale jen dokážou něco spustit.\nTakže práce s nimi bude podobná.€//Vytvoříme tlačítka v .form souboru a pojmenujeme\nprivate JButton tlacitko1;\nprivate JButton tlacitko2;\nprivate JButton tlacitko3;\n\n//Kód pro aplikaci\n\n public MainForm(){\n //Kód co nastavuje okno, atd.\n tlacitko1.addActionListener(e-> NapisAhoj()); //Co má udělat po stisknutí\n //(funguje tak, že přidá úkol pomocí addActionListener())\n tlacitko2.addActionListener(e-> System.out.println("Ahoj č.2"));\n //Nemusí nutně volat funkci, může zrovna něco udělat samo\n\n \n tlacitko3.addActionListener(e-> { //Může udělat i více věcí najednou\n System.out.println("1. zpráva");\n System.out.println("2. zpráva");\n });\n }\n\n void NapisAhoj(){\n System.out.println("Ahoj");\n }\n
JMenu€Menu používáme pro rychlý výběr akcí, bývá nahoře, hned pod názvem aplikace\nMenu je něco jako tabulka (viz programování v HTML5),\nPrvní vytvoříme JMenuBar, do něj vytvoříme sekce - JMenu a do JMenu pak přidáme JMenuItem€public static void main(String[] args) { //ke kódu pro program připojíme pár řádků\n MainForm mainForm = new MainForm();\n\n JMenuBar menuBar;\n menuBar = new JMenuBar();\n\n JMenu fileMenu = new JMenu("Soubor");\n menuBar.add(fileMenu);\n\n JMenuItem openItem = new JMenuItem("Otevřít");\n fileMenu.add(openItem);\n\n openItem.addActionListener(e-> {//Co má udělat "Otevřít" v menu po stisknutí\n System.out.println("Stisknuto tlačítko z menu!");\n });\n\n mainForm.setJMenuBar(menuBar); //nastavíme, aby se toto menu zobrazilo v\n //našem okně\n }
JTable€Tabulky vypadají složitě, ale zas tak složité nejsou.\nPoužíváme je, když chceme zpřehlednit data.€ JTable table = new JTable(3, 2); //Vytvoříme tabulku která je velikosti 3x2\n JScrollPane scrollPane = new JScrollPane(table); //tabulka sama o sobě nejde\n //zobrazit v okně, takže ji musíme dát dovnitř JScrollPane\n //(stručně o JScrollPane: JTextArea, ale se scroll barem)\n \n private void zobrazTabulku() { //Zavoláme např. tlačítkem\n table.setModel(new DefaultTableModel( //Přenastavíme data\n //v tabulce\n new Object[][]{{"Info 1", "Info 2", "Info 3"}}, \n //Co bude v polích 1-3\n \n new Object[]{"Kategorie 1", "Kategorie 2", "Kategorie 3"})); \n //Nadpisy polí 1-3\n \n this.add(scrollPane); //Přidáme scrollPane s tabulkou\n this.revalidate(); //Aktualizujeme GUI\n }
$
|
$
Ostatní
O programu€-€-
Data editor€-€-
Procvičovací projekty€-€-