[[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)