Senin, 29 November 2010

program java GUI

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

class swingFrame extends JFrame {

private int lebar = 320;
private int tinggi = 125;

public swingFrame() {
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
setTitle("Swing Components");
setSize(lebar, tinggi);
setLocation((screen.width - this.lebar) / 2, (screen.height - this.tinggi) / 2);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);

swingPanel panel = new swingPanel();
Container cont = new Container();
cont = getContentPane();
cont.setLayout(null);
panel.setBounds(35, 20, 250, 50);
cont.add(panel);
}
}

class swingPanel extends JPanel {

private JButton fakbutton = new JButton("Proses");
private JButton reset = new JButton("Reset");
private JTextField angka1 = new JTextField("");
private JTextField hasil = new JTextField("");

public swingPanel() {
fakbutton.addActionListener(new fungsiAction());
reset.addActionListener(new fungsiAction());
hasil.setEditable(false);

setLayout(new GridLayout(2, 2, 5, 5));
add(angka1);
add(fakbutton);
add(hasil);
add(reset);
}

int faktorial(int x) {
if (x == 1) return 1;
else return x * faktorial(x - 1);
}

private class fungsiAction implements ActionListener {

public void actionPerformed(ActionEvent ae) {
try {
if (ae.getActionCommand().equals("Proses")) {
int var = Integer.parseInt(angka1.getText());
hasil.setText(Integer.toString(faktorial(var)));
fakbutton.setEnabled(false);
} else {
angka1.setText("");
hasil.setText("");
fakbutton.setEnabled(true);
}

} catch (Exception e) {
JOptionPane.showMessageDialog(null, "angka yang anda masukan salah",
"ERROR", JOptionPane.ERROR_MESSAGE);
}
}
}
}

public class Swing {

public static void main(String[] args) {
swingFrame frame = new swingFrame();
frame.setVisible(true);
}
}


DAN BERIKUT ADLAH LOGIKA DARI LISTING PROGRAM


import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

mengimport komponen-komponen awt
mengimport komponen awt agar dapat memberikan aksi
mengimport komponen-komponen swing


class swingFrame extends JFrame {

private int lebar = 320;
private int tinggi = 125;

membuat class swingFrame yang merupakan turunan dari JFrame
membuat integer yang bervariabel lebar dan di private agar tidak dapat dieksekusi oleh class lain dan diberinilai 320. membuat integer yang bervariabel tinggi dan di private agar tidak dapat dieksekusi oleh class lain dan diberinilai 125.


public swingFrame() {
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
setTitle("Swing Components");
setSize(lebar, tinggi);
setLocation((screen.width - this.lebar) / 2, (screen.height - this.tinggi) / 2);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);

merupakan method swingFrame. Dimension screen untuk mengatur tampilan output. Dan memberi judul frame dengan nama “Swing Components”. Menentukan variable sizenya yaitu lebar dan tinggi.
setLocation mengatur posisi frame pada layar computer. Jadi screen.width - this.lebar) / 2 ukuran screen computer dikurang lebar (320) lalu dibagi 2. screen.height - this.tinggi) / 2 ukuran screen computer dikurang tinggi (125) lalu dibagi 2. setDefaultCloseOperation(EXIT_ON_CLOSE) agar dapat disclose tanpa menggunakan command prompt. setResizable(false) agar ukuran frame tidak dapat diubah manual.


swingPanel panel = new swingPanel();
Container cont = new Container();
cont = getContentPane();
cont.setLayout(null);
panel.setBounds(35, 20, 250, 50);
cont.add(panel);

membuat panel swing.
Container jenis komponen yang ”menampung” dan mengelola komponen komponen lainnya.
setLayout untuk mengatur isi frame.
.setBounds(35, 20, 250, 50), 35 untuk mengatur posisi textfield dari sebelah kanan agar ditengah. 20 mengatur tepi atas. 250 untuk mengatur ukuran textfield dan button. 50 untuk mengatur jarak sebelah kanan
.

class swingPanel extends JPanel {

private JButton fakbutton = new JButton("Proses");
private JButton reset = new JButton("Reset");
private JTextField angka1 = new JTextField("");
private JTextField hasil = new JTextField("");

membuat class swingPanel yang merupakan keturunan dari class JPanel
menggunakan private agar tidak dapat tereksekusi oleh class lain. Membuat button yang bervariabel fakbutton, dan buttonnya beri nama Proses. Membuat button yang bervariabel reset, dan buttonnya beri nama Reset. Membuat textfiled yang bervariabel angka1, “” agar tampilan textfieldnya kosong.
Membuat textfield yang bervariabel hasil, “” agar textfieldnya kosong.


public swingPanel() {
fakbutton.addActionListener(new fungsiAction());
reset.addActionListener(new fungsiAction());
hasil.setEditable(false);

method swingPanel. Memberikan aksi terhadap button yang bervariabelnya fakbutton.
Memberikan aksi terhadap button yang bervariabelnya reset.
Dan textfiled yang variabelnya hasil menjadi tidak aktif.


setLayout(new GridLayout(2, 2, 5, 5));
add(angka1);
add(fakbutton);
add(hasil);
add(reset);

membuat layout pada frame. new GridLayout(2, 2, 5, 5), 2 pertama maksudnya untuk membuat baris ada 2. 2 yang kedua membuat colom ada 2. Lalu 5 pertama untuk mengatur jarak antara textfield dan button.
Untuk menambahkan textfield angka1, button fakbutton, textfield hasil, button reset kedalam layout.



int faktorial(int x) {
if (x == 1) return 1;
else return x * faktorial(x - 1);
}
Membuat integer yang bervariabel x , jika x samadengan 1 maka variabel x* faktorial(x - 1) dan nilai x di kurang 1 dan akan mengulang sampai x bernilai 1, mislkan nilai x 4 maka akan diproses 4x3x2x1=24


private class fungsiAction implements ActionListener {

public void actionPerformed(ActionEvent ae) {
try {
if (ae.getActionCommand().equals("Proses")) {
int var = Integer.parseInt(angka1.getText());
hasil.setText(Integer.toString(faktorial(var)));
fakbutton.setEnabled(false);
} else {

angka1.setText("");
hasil.setText("");
fakbutton.setEnabled(true);
}

Menggunakan class private agar tidak dapat dieksekui oleh class lain.

Objek yang memiliki suatu identifier actionEvent ae. Agar button Proses memiliki aksi. Jika setelah menginput nilai maka akan diproses menghitung dengan rumus faktorial. Jika tidak maka textfield angka1 dan hasil di kosongkan. Dan fakbutton aktif.


} catch (Exception e) {
JOptionPane.showMessageDialog(null, "angka yang anda masukan salah",
"ERROR", JOptionPane.ERROR_MESSAGE);
jika anda salah memasukan data dan tidak dapat dihitung maka akan tampil massage box seperti ini.


Listing programnya

public class Swing {

public static void main(String[] args) {
swingFrame frame = new swingFrame();
frame.setVisible(true);

membuat class utama benama Swing. Membuat method. frame.setVisible(true) agar framenya aktif.

Output sebelum diinput datanya



Output setelah di input datanya

0 komentar:

Posting Komentar