Dulifulival sokat beszélgettünk, hogy hogyan is lehetne szebben programozni. Kiderült, hogy igaziból neki már van megoldása a hét pontra, csak nem mondta el, mert nem a jó kérdést tettem fel.
Lássuk, hogy mit tanultam tőle!
Ilyen a Swing:
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
public class HelloGui {
String name="Geza";
public HelloGui() {
JFrame frame=new JFrame("Hello");
frame.setLayout(new GridLayout(2, 2));
frame.add(new JLabel("Név:"));
JTextField nameEdit=new JTextField(name);
frame.add(nameEdit);
frame.add(new JLabel("Hello"));
JLabel nameLabel=new JLabel(name);
frame.add(nameLabel);
nameEdit.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
changed();
}
@Override
public void insertUpdate(DocumentEvent e) {
changed();
}
@Override
public void changedUpdate(DocumentEvent e) {
changed();
}
public void changed() {
name=nameEdit.getText();
nameLabel.setText(name);
}
});
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) {
new HelloGui();
}
}
Ilyen lenne egyszerűbben:
public class HelloGui extends Form {
String name="Geza";
public HelloGui() {
window()
.text("Hello")
.add(
label("Nev:"),edit("name"),br(),
label("Hello"),view("name")
)
.build();
}
public static void main(String[] args) {
new HelloGui();
}
}
Hátőőő, izé... Mondjuk lehet ellenkezni, hogy a .build() egy külön sor, de azt mondta Dulifuli, hogy így olvashatóbb... de nagyságrendileg tényleg csak egy sor egy dolog! Hűha!
Egy teljesen üres, haszontalan ablak:
public class HelloGui extends Form {
public static void main(String[] args) {
window().build();
}
}
Egy teljesen üres, haszontalan ablak, a fejlécében a Hello szöveggel:
public class HelloGui extends Form {
public static void main(String[] args) {
window().text("Hello").build();
}
}
Egy ablak fejléccel, benne egy Hello Geza felirattal, és mellette egy Ok gombbal:
public class HelloGui extends Form {
public static void main(String[] args) {
window().text("Hello").add(label("Hello Geza"),button("Ok")).build();
}
}
Ugyanez szebben tagolva, amitől kicsit olvashatóbb lesz (látszik az add belseje):
public class HelloGui extends Form {
public static void main(String[] args) {
window()
.text("Hello")
.add(
label("Hello Geza"),button("Ok")
)
.build();
}
}
Nem semmi, ugye? Csak ez az írásmód kicsit fura a pontokkal. Meg miért nincs pontosvessző a sorok végén. Meg hogy honnan jön az a window() meg label().