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.
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 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.
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.
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.
Hivatalos dokumentáció: