[[oktatas:programozás:java|< Java]] ====== Java library ====== * **Szerző:** Sallai András * Copyright (c) 2022, Sallai András * Szerkesztve: 2023, 2024 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Az InputPanel projekt ===== Egy Swing megoldásból készítünk saját programozói könyvtárat. A végeredmény egy .jar fájl lesz. Egy InputPanel osztályt hozunk létre, ami a JPanel-ből készül. Teszünk fel rá feliratot és egy beviteli mezőt. Csomagnak hu.nagyjanos domain állítjuk be. package hu.nagyjanos; import javax.swing.BoxLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; public class InputPanel extends JPanel { JLabel label; JTextField field; public InputPanel() { this.label = new JLabel("InputPanel"); this.field = new JTextField(); this.setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS)); this.setBorder(new EmptyBorder(5, 10, 5, 10)); this.label.setBorder(new EmptyBorder(0, 0, 0, 10)); this.addComponent(); } public void addComponent() { this.add(label); this.add(field); } public InputPanel(JLabel label) { this.label = label; } public void setText(String text) { this.label.setText(text); } public String getText() { return this.label.getText(); } public void setValue(String value) { this.field.setText(value); } public String getValue() { return this.field.getText(); } } Vegyük észre a package sor: package hu.nagyjanos; Ha van az Interneten tartománynevünk, akkor azt szokás ide tenni. Tegyük fel, hogy van egy nagyjanos.hu tartománynevünk. Ezt felírjuk fordított sorrendben. Ennek megfelelő könyvtárszerkezetbe rakjuk az InputPanelt. ===== Könyvtárszerkezet ===== A projektből töröltük az App.java fájlt: inputpanel/ |-.vscode/ |-bin/ |-lib/ |-src/ | `-hu/ | `-nagyjanos/ | `-InputPanel.java `-README.md Fontos a projektkönyvtár neve, mivel ezen a néven jön létre a .jar fájl, bár utólag is átnevezhető. ===== A modul exportálása ===== * Nyissuk meg az InputPanel.java fájt VSCode-ban. * Az Explolerben keressük meg a JAVA PROJECTS részt * Ha az egeret az elem felé visszük látunk ott egy talpas nyilat, ami jobbra mutat. * Az "Export Jar..." felirat jelenik meg. Kattintsunk. A projekt gyökérkönyvtárában létrejön egy **inputpanel.jar** fájl. A inputpanel.jar fájl, most már használható lett más projektekben. ===== Javadoc ===== package hu.nagyjanos; import javax.swing.BoxLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; /** * Az InputPanel egy Swing komponens, ami * alkalmas valamilyen érték bekérésére. * A felirat és a bevitelimező egymás * mellett helyezkedik el. * * @author Nagy János * @version 1.0 * @since 2022-12-04 */ public class InputPanel extends JPanel { private JLabel label; private JTextField field; /** * Példány létrehozása az InputPanelből */ public InputPanel() { this.label = new JLabel("InputPanel"); this.field = new JTextField(); this.setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS)); this.setBorder(new EmptyBorder(5, 10, 5, 10)); this.label.setBorder(new EmptyBorder(0, 0, 0, 10)); this.addComponent(); } private void addComponent() { this.add(label); this.add(field); } /** * Példány létrehozása felirat beállításával * @param label A panel feliratának szövege */ public InputPanel(JLabel label) { this.label = label; } /** * A panel feliratának beállítása * @param text A felirat szövege */ public void setText(String text) { this.label.setText(text); } /** * A panel feliratnának lekérdezése * @return Visszatér a panel feliratával */ public String getText() { return this.label.getText(); } /** * A panel értékének beállítása * @param value A penel értéke */ public void setValue(String value) { this.field.setText(value); } /** * A panel értékének lekérdezése * @return Visszatér a panel értékével */ public String getValue() { return this.field.getText(); } } Generálás: javadoc -d javadoc src/hu/nagyjanos/InputPanel.java A label és field adattagokra figyelmeztetést kapunk, mivel nem írtunk hozzá megjegyzést, de tiszta kód elvei szerint nem kell oda, hiszen a dokumentációban sem jelenik meg, ezzel a javadoc kapcsolókkal. ===== Tesztelés ===== Az src könyvtárban nem készítettünk App.java, Main.java vagy más osztályt amivel használjuk az InputPanelt. Ezt a test könyvtárban tesszük meg. Készítsünk egy **test** könyvtárat. Vegyük fel a projekt útvonalai közzé. Készítsünk egy main() metódust, amiben használjuk a modulunkat. inputpanel/ |-.vscode/ |-bin/ |-lib/ |-src/ | `-hu/ | `-nagyjanos/ | `-InputPanel.java |-test/ | `-App.java `-README.md A .jar fájlt készítünk a test könyvtárat nem tesszük a bele. ===== Link ===== Hivatalos dokumentáció: * https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html (2022)