Pengalaman mengembangkan Sistem : Program Cetak Biodata Mahasiswa menggunakan Java.
Pertama kali saya membuat program inputan adalah ketika diajar oleh para PJ Laboratorium Universitas Gunadarma, waktu itu kami diberi materi program Java dari dasar sekali hingga agak sedikit memutar otak. Saat itu saya diberi materi inputan menggunakan package scanner, program itu masih dasar tidak terlalu rumit karena hanya sedikit peintah, syntax, variabel, metode yang digunakan. Berikut listing program inputan cetak biodata mahasiswa menggunakan metoda Scanner:
· import java.util.Scanner;
· public class cetakbiodata
· {
· public static void main(String [] args)
· {
· Scanner jakascanner = new Scanner(System.in);
· System.out.println("Masukan Nama : ");
· System.out.println("Masukan Kelas : ");
· System.out.println("Masukan NPM : ");
· String nama = jakascanner.nextLine();
· String kelas = jakascanner.nextLine();
· String npm = jakascanner.nextLine();
· System.out.println(" ");
· System.out.println(" ");
· System.out.println(" ");
· System.out.println("Nama : " + nama);
· System.out.println("Kelas : " + kelas);
· System.out.println("NPM : " + npm);
· }
· }
Outputnya:
Dari banyaknya listingnya pun sudah kelihatan ini hanya program sederhana, dan juga masih di cetak dalam dos, belum unsur GUI(Grapich User Interface) nya, otomatis dari segi design programnya pun masih nihil. Kemudian setelah saya belajar ke tingkat selanjutnya juga dari buku referensi yang saya baca lalu saya kembangkan program tersebut menjadi agak sedikit cantik dengan GUI yang saya selipkan dalam programnya. Berikut listing program Cetak Biodata Mahasiswa menggunakan metoda GUI:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
public class testi extends JPanel implements ActionListener,FocusListener {
private static final long serialVersionUID = 1L;
JTextField NamaField, KelasField, NPMField, FakultasField, JurusanField;
static String lString = "Laki-Laki";
static String pString = "Perempuan";
public String jkString;
boolean addressSet = false;
Font regularFont, italicFont;
JLabel addressDisplay;
final static int GAP = 10;
public testi() {
setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));
JPanel leftHalf = new JPanel() {
public Dimension getMaximumSize() {
Dimension pref = getPreferredSize();
return new Dimension(Integer.MAX_VALUE,
pref.height);
}
};
leftHalf.setLayout(new BoxLayout(leftHalf,
BoxLayout.PAGE_AXIS));
leftHalf.add(createEntryFields());
leftHalf.add(createRadioButtons());
leftHalf.add(createButtons());
add(leftHalf);
add(createAddressDisplay());
}
protected JComponent createRadioButtons() {
JPanel panel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
JRadioButton lButton = new JRadioButton (lString);
lButton.setMnemonic(KeyEvent.VK_B);
lButton.addActionListener(this);
lButton.setActionCommand(lString);
panel.add(lButton);
JRadioButton pButton = new JRadioButton (pString);
pButton.setMnemonic(KeyEvent.VK_C);
pButton.addActionListener(this);
pButton.setActionCommand(pString);
panel.add(pButton);
ButtonGroup group = new ButtonGroup();
group.add(lButton);
group.add(pButton);
panel.setBorder(BorderFactory.createEmptyBorder(0, 0,
GAP-5, GAP-5));
return panel;
}
protected JComponent createButtons() {
JPanel panel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
JButton button = new JButton("OK");
button.addActionListener(this);
panel.add(button);
button = new JButton("Hapus");
button.addActionListener(this);
button.setActionCommand("hapuslayar");
panel.add(button);
panel.setBorder(BorderFactory.createEmptyBorder(0, 0,
GAP-5, GAP-5));
return panel;
}
public void actionPerformed(ActionEvent e) {
if ("Laki-Laki".equals(e.getActionCommand())) {
jkString = ("Laki - Laki");
}
if ("Perempuan".equals(e.getActionCommand()))
{
jkString = ("Perempuan");
}
if ("hapuslayar".equals(e.getActionCommand())) {
addressSet = false;
NamaField.setText("");
KelasField.setText("");
NPMField.setText("");
JurusanField.setText("");
FakultasField.setText("");
updateDisplays();
} else if ("OK".equals(e.getActionCommand()))
{
addressSet = true;
updateDisplays();
}
}
protected void updateDisplays() {
addressDisplay.setText(formatAddress());
if (addressSet) {
addressDisplay.setFont(regularFont);
} else {
addressDisplay.setFont(italicFont);
}
}
protected JComponent createAddressDisplay() {
JPanel panel = new JPanel(new BorderLayout());
addressDisplay = new JLabel();
addressDisplay.setHorizontalAlignment
(JLabel.CENTER);
regularFont =
addressDisplay.getFont().deriveFont
(Font.PLAIN, 16.0f);
italicFont = regularFont.deriveFont(Font.ITALIC);
updateDisplays();
//Lay out the panel.
panel.setBorder(BorderFactory.createEmptyBorder(
GAP/2, //ATAS
0, //KIRI
GAP/2, //BAWAH
0)); //KANAN
panel.add(new JSeparator(JSeparator.VERTICAL),
BorderLayout.LINE_START);
panel.add(addressDisplay,
BorderLayout.CENTER);
panel.setPreferredSize(new Dimension(400, 250));
return panel;
}
protected String formatAddress() {
if (!addressSet) return " ";
String Nama = NamaField.getText();
String Kelas = KelasField.getText();
String NPM = NPMField.getText();
String Jenis = jkString;
String Fakultas = FakultasField.getText();
String Jurusan = JurusanField.getText();
String empty = "";
if ((Nama == null) || empty.equals(Nama)) {
Nama = "<em>(Anda belum menginput Nama)</em>";
}
if ((Kelas == null) || empty.equals(Kelas)) {
Kelas = "<em>(Anda belum menginput Kelas)</em>";
}
if ((NPM == null) || empty.equals(NPM)) {
NPM = "<em>(Anda belum menginput NPM)</em>";
}
if ((Jenis == null) || empty.equals(Jenis)) {
Jenis = "<em>(Anda belum menginput Jenis Kelamin)</em>";
}
if ((Fakultas == null) || empty.equals(Fakultas)) {
Fakultas = "<em>(Anda belum menginput Fakultas)</em>";
}
if ((Jurusan == null) || empty.equals(Jurusan)) {
Jurusan = "<em>(Anda belum menginput Jurusan)</em>";
}
StringBuffer sb = new StringBuffer();
sb.append("<html>");
sb.append("<title>Gehoo! Registration Confirmation</title>");
sb.append("<body> <p align=justify>");
sb.append(" Nama : ");
sb.append(Nama); sb.append(" ");
sb.append("<br>");
sb.append(" ");
sb.append(" Kelas : ");
sb.append(Kelas);
sb.append(",");
sb.append(" ");
sb.append("<br>");
sb.append(" ");
sb.append(" NPM : ");
sb.append(NPM);
sb.append("<br>");
sb.append(" ");
sb.append("Jenis Kelamin : ");
sb.append(Jenis);
sb.append("<br>");
sb.append(" ");
sb.append(" Fakultas : ");
sb.append(Fakultas);
sb.append("<br>");
sb.append(" ");
sb.append(" Jurusan : ");
sb.append(Jurusan);
sb.append("</p> </body> </html>");
return sb.toString();
}
protected MaskFormatter createFormatter(String s) {
MaskFormatter formatter = null;
try {
formatter = new MaskFormatter(s);
} catch (java.text.ParseException exc) {
System.err.println("formatter is bad: " + exc.getMessage());
System.exit(-1);
}
return formatter;
}
public void focusGained(FocusEvent e) {
Component c = e.getComponent();
if (c instanceof JFormattedTextField) {
selectItLater(c);
} else if (c instanceof JTextField) {
((JTextField)c).selectAll();
}
}
protected void selectItLater(Component c) {
if (c instanceof JFormattedTextField) {
final JFormattedTextField ftf = (JFormattedTextField)c;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ftf.selectAll();
}
});
}
}
public void focusLost(FocusEvent e) { }
protected JComponent createEntryFields() {
JPanel panel = new JPanel(new SpringLayout());
String[] labelStrings = {
"Nama : ",
"Kelas : ",
"NPM : ",
"Fakultas : ",
"Jurusan : ",
};
JLabel[] labels = new JLabel[labelStrings.length];
JComponent[] fields = new JComponent[labelStrings.length];
int fieldNum = 0;
NamaField = new JTextField();
NamaField.setColumns(20);
fields[fieldNum++] = NamaField;
KelasField = new JTextField();
KelasField.setColumns(20);
fields[fieldNum++] = KelasField;
NPMField = new JTextField();
NPMField.setColumns(20);
fields[fieldNum++] = NPMField;
FakultasField = new JTextField();
FakultasField.setColumns(20);
fields[fieldNum++] = FakultasField;
JurusanField = new JTextField();
JurusanField.setColumns(20);
fields[fieldNum++] = JurusanField;
for (int i = 0; i < labelStrings.length; i++) {
labels[i] = new JLabel(labelStrings[i],
JLabel.TRAILING);
labels[i].setLabelFor(fields[i]);
panel.add(labels[i]);
panel.add(fields[i]);
}
SpringUtilities.makeCompactGrid(panel,
labelStrings.length, 2,
GAP, GAP, //init x,y
GAP, GAP/2);//xpad, ypad
return panel;
}
private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame(" Biodata Mahasiswa ");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent newContentPane = new testi();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
}
);
}
}
Outputnya:
Berikut output program inputan cetak biodata mahasiswa mengunakan GUI. terlihat sedikit cantik dari program sebelumnya yang saya buat. Itulah pengalaman saya dalam mengembangkan sistem.
n.b: program berikut akan jalan dengan bantuan program lainnya, yaitu springutilities.java click here to see springutilities.java
Tidak ada komentar:
Posting Komentar