Sabtu, 03 Desember 2011

Kesan/pesan/kritikan selama perkuliahan pemrograman visual di POLITEKNIK TELKOM

Kesan : saya sedikit menyukai pemrogramn java setelah mengikuti matakuliah ini dari yang sama sekali tdak suka karena menganggap terlalu susah.
Pesan : pesan untuk dosen saya.tetaplah seperti ini.
kritik : NO CommenD!

yah selama dipoliteknik telkom pertama ada rasa heran ,aneh , dan sedikit penyesalan. Tapi setelah berjalan beberapa semester enjoy aja lah, nikmatin apa yang udah diberikan oleh Allah SWT. :)

Koneksi java gui(netbeans) ke Database(MySQL

Java.sql.Connection

sebelum kita mengelola database pada MySQL kita perlu membuat terlebih dahulu sebuah koneksi yang dalam java dekenal dengan java.sql.Connection.  tapi sebelumnya kita harus menentukan sebuah driver setiap DBMS yang akan kita gunakan. karena kita menggunakan DBMS MySQL, maka kita harus membuat instansiasi dari Driver milik MySQL. dan masalahnya, java tidak menyediakan driver untuk MySQL, sehingga kita harus mendownload driver MySQL dari situs resmi MySQL. tapi tenang saja, karena kita pake Netbeans, semuanya telah tersedia, hahahaha….
untuk memasukkan sebuah library untuk drriver MySQL pada netbeans gampang saj. caranya klik kanan pada library milik project yang akan kita gunakan lalu pilih add library :
image
setelah itu cari library MySQL JDBC Driver lalu klik tombol add library :
image
sekarang bisa dilihat kalo MySQL JDBC Driver telah ada di library project yang akan kita buat :
image
setelah itu buat sebuah class untuk koneksi (jika anda belum tahu cara membuat koneksi, silahkan lihat kembali tutorial MySQL dan Netbeans bagian 1) :
01import com.mysql.jdbc.Driver;
02import java.sql.Connection;
03import java.sql.DriverManager;
04import java.sql.SQLException;
05 
06public class Koneksi {
07 
08    private static Connection koneksi;
09 
10    public static Connection getConnection() throws SQLException {
11        if (koneksi == null) {
12            // panggil Driver MySQL
13            new Driver();
14            // buat koneksi
15            koneksi = DriverManager.getConnection("jdbc:mysql://localhost:3306/netbeans", "username", "password");
16        }
17        return koneksi;
18    }
19 
20    public static void main(String args[]) {
21        try {
22            getConnection();
23            System.out.println("Koneksi Berhasil");
24        } catch (SQLException ex) {
25            System.err.println("Koneksi Gagal");
26        }
27    }
28}
setelah itu coba running, jika berhasil maka akan mengeluarkan tulisan “Koneksi Berhasil”, jika gagal, maka akan keluar tulisan “Koneksi Gagal”. nach sekarang saya akan anggap koneksi berhasil. kalo gagal, pasti ada yang salah dengan yang anda ketikkan, ulangi lagi sampai berhasil….

Java.sql.Statement

nah sekarang kita akan masuk ke proses INSERT, UPDATE, DELETE pada database. caranya kita harus membuat sebuah Statement, lalu dengan statement tersebut kita bisa membuat proses eksekusi INSERT, UPDATE, dan DELETE. namun tak bisa mengeksekusi proses SELECT karena proses tersebut mengembalikan nilai, makanya nanti kita akan bahas prose SELECT di subbab selanjutnya.
untuk membuat Statement, kita cukup memanggil metode createStatement() milik Connection. ini contohnya :
1Connection koneksi = ....
2Statement statement = koneksi.createStatement();</code>
sedangkan untuk melakukan proses eksekusi instruksi SQL, kita gunakan metode executeUpdate(“PERINTAH SQL”) milik Statement, contohnya kita akan mencoba membuat Statement untuk eksekusi perintah INSERT :
01import java.sql.SQLException;
02import java.sql.Statement;
03 
04public class InsertRecord {
05 
06    public static void main(String args[]) throws SQLException {
07        Statement statement = Koneksi.getConnection().createStatement();
08        statement.executeUpdate("INSERT INTO MAHASISWA " +
09                "VALUES (" +
10                "'10106031','Eko Kurnaiwan Khannedy','1988-12-29'" +
11                ");");
12 
13        statement.close();
14    }
15}
setelah di eksekusi, maka ini hasilnya :
image
sekarang kita coba melakukan proses UPDATE :
01import java.sql.SQLException;
02import java.sql.Statement;
03 
04public class UpdateRecord {
05 
06    public static void main(String args[]) throws SQLException {
07        Statement statement = Koneksi.getConnection().createStatement();
08        statement.executeUpdate("UPDATE MAHASISWA " +
09                "SET " +
10                "NAMA = 'Nesia Oktiana' ," +
11                "TANGGAL_LAHIR = '1988-10-04' " +
12                "WHERE " +
13                "NIM = '10106031';");
14        statement.close();
15    }
16}
setelah dieksekusi maka ini hasilnya :
image
sekarang kita coba proses DELETE :
01import java.sql.SQLException;
02import java.sql.Statement;
03 
04public class DeleteRecord {
05 
06    public static void main(String args[]) throws SQLException {
07        Statement statment = Koneksi.getConnection().createStatement();
08        statment.executeUpdate("DELETE FROM MAHASISWA " +
09                "WHERE NIM = '10106031';");
10        statment.close();
11    }
12}
setelah dieksekusi maka ini hasilnya :
image
ternyata gampangkan membuat koneksi dan melakukan proses INSERT UPDATE dana DELETE di Java. ;)

Java.sql.ResultSet

seperti janji saya, sekarang kita akan belajar bagaimana melakukan proses SELECT di Java. hmmmm gampang aja, pertama buat Connection, llau buat Statement lalu buat ResultSet, caranya seperti ini :
1Connection koneksi = ...
2Statement statement = koneksi.createStatement();
3ResultSet result = statement.executeQuery("SELECT ...");
setelah itu untuk mendapatkan datanya gunakan metode get[TipeData](“NAMA_KOLOM”) milik ResultSet. untuk lebih jelasnya sekarang kita akan mencoba menampilkan seluruh data pada tabel Mahiswa yang ada pada database NETBEANS:
01import java.sql.Date;
02import java.sql.ResultSet;
03import java.sql.SQLException;
04import java.sql.Statement;
05 
06public class SelectRecord {
07 
08    public static void main(String args[]) throws SQLException {
09        Statement statement = Koneksi.getConnection().createStatement();
10 
11        statement.executeUpdate("INSERT INTO MAHASISWA VALUES ('1','A','1988-12-29')");
12        statement.executeUpdate("INSERT INTO MAHASISWA VALUES ('2','B','1988-12-29')");
13        statement.executeUpdate("INSERT INTO MAHASISWA VALUES ('3','C','1988-12-29')");
14        statement.executeUpdate("INSERT INTO MAHASISWA VALUES ('4','D','1988-12-29')");
15        statement.executeUpdate("INSERT INTO MAHASISWA VALUES ('5','E','1988-12-29')");
16 
17        ResultSet result = statement.executeQuery("SELECT * FROM MAHASISWA");
18 
19        String nim;
20        String nama;
21        Date tanggalLahir;
22        int index = 1;
23 
24        while (result.next()) {
25            nim = result.getString("NIM");
26            nama = result.getString("NAMA");
27            tanggalLahir = result.getDate("TANGGAL_LAHIR");
28 
29            System.out.println("Mahasiswa Ke-" + index);
30            System.out.println("Nim : " + nim);
31            System.out.println("Nama : " + nama);
32            System.out.println("Tanggal Lahir : " + tanggalLahir);
33            System.out.println();
34            index++;
35        }
36        result.close();
37        statement.close();
38    }
39}
setelah dieksekusi, maka akan menghasilkan output seperti ini :
Mahasiswa Ke-1
Nim : 1
Nama : A
Tanggal Lahir : 1988-12-29
Mahasiswa Ke-2
Nim : 2
Nama : B
Tanggal Lahir : 1988-12-29
Mahasiswa Ke-3
Nim : 3
Nama : C
Tanggal Lahir : 1988-12-29
Mahasiswa Ke-4
Nim : 4
Nama : D
Tanggal Lahir : 1988-12-29
Mahasiswa Ke-5
Nim : 5
Nama : E
Tanggal Lahir : 1988-12-29
sekarang akan saya beritahu apa itu metode next() milik ResultSet. metode next() merupakan metode yang digunakan untuk mengecek apakah ada record lagi selain pada posisi index yang saat ini (pada awalnya posisi index ResultSet adalah 0 (nol)) jika ada maka index akan loncat kedepan misal dari 0 menjadi 1 dan akan mengembalikan nilai true, tetapi jika tak ada maka index tetap disitu dan akan mengembalikan nilai false;
selain itu perlu diketahui, bahwa class Statement dan ResultSet serta Connection memiliki metode yang bernama metode close(). metode ini merupakan metode yang digunakan untuk menutup. misal ketika Satement kita panggil metode close() nya maka Statement tersebut akan ditutup, sehingga koneksi ke MySQL akan terputus dan dari memori akan dibapus. jadi metode close() harus selalu dipanggil jika proses telah selesai, karena jika tidak maka akan terjadi penumpukan memori…

Event listener (action listener, mouse listener, mouse motion listener)

Event Listener merupakan interface yang akan meng-handle event yang terjadi. setiap type event mempunyai interface yang bersesuaian. Listener tersebut harus diimplementasikan oleh class yang akan meng-handle event
 
Action Listener : Terjadi ketika komponen seperti tombol diklik atau ditekan dengan tombol enter .

CONTOH ActionListener:
  
  button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                if (field.getText().equals("")) {
                    System.out.println("tidak ada text yang ditulis!!");
                    JOptionPane.showMessageDialog(frame, label,
                            "judul pesannya", 1);
                } else {
                    JFrame frame2 = new JFrame("frame hasil");
                    frame2.setSize(600, 400);
                    frame2.setLocationRelativeTo(frame);
                    final JTextPane textPane = new JTextPane();
                    final JScrollPane ScrollPane = new JScrollPane(textPane);

                    panggilKoneksi(field, textPane);

                    frame2.add(ScrollPane);
                    frame2.setVisible(true);
                }
            }

            private void panggilKoneksi(final JTextField field,
                    final JTextPane textPane) {
                try {
                    URL url = new URL(field.getText());
                    URLConnection con = url.openConnection();
                    InputStream is = con.getInputStream();
                    ByteArrayOutputStream os = new ByteArrayOutputStream();

                    byte[] b = new byte[10];
                    int len;
                    while ((len = is.read(b, 0, b.length)) != -1) {
                        os.write(b, 0, len);
                    }

                    textPane.setText(new String(os.toByteArray()));

                    os.close();
                    is.close();

                } catch (MalformedURLException e) {
                    JLabel label2 = new JLabel("salah tulis di URL");
                    JOptionPane.showMessageDialog(frame, label2,
                            "kesalahan tulis", 1);
                } catch (IOException e) {
                    JLabel label3 = new JLabel("salah tulis di URL ini");
                    JOptionPane.showMessageDialog(frame, label3,
                            "kesalahan tulisan", 0);

                }

            }
        });
Mouse Listener : Mendeteksi tombol mouse yang digunakan.
 
  • void mouseClicked (MouseEvent e) Mouse di-click atau ditekan tombolnya kemudian langsungdilepaskan.
  • void mouseEntered (MouseEvent e) Ketika mouse memasuki komponen.
  • void mouseExited(MouseEvent e) Ketika mouse keluar dari komponen.
  • void mousePressed (MouseEvent e) Tombol mouse ditekan.
  • void mouseReleased(MouseEvent e) Tombol mouse dilepaskan
. 
Mouse Motion Listener : Terjadi ketika user mengirim perintah dengan mouse saat mendrag atau move



CONTOH MouseEventsDemo :

package mouseeventsdemo;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author Ren
*/
public class MouseEventsDemo extends Frame implements MouseListener, MouseMotionListener {  // Langkah 1
TextField tf;
public MouseEventsDemo( String title){
super(title);
tf = new TextField(60);
addMouseListener(this); // Langkah 2
}
public void launchFrame() {
/* Menambah komponen pada frame */
add(tf, BorderLayout.SOUTH);
setSize(300,300);
setVisible(true);
}
public void mouseClicked(MouseEvent me) { // Langkah 3
String msg = “Mouse clicked.”;
tf.setText(msg);
}
public void mouseEntered(MouseEvent me) {
String msg = “Mouse entered component.”;
tf.setText(msg);
}
public void mouseExited(MouseEvent me) {
String msg = “Mouse exited component.”;
tf.setText(msg);
}
public void mousePressed(MouseEvent me) {
String msg = “Mouse pressed.”;
tf.setText(msg);
}
public void mouseReleased(MouseEvent me) {
String msg = “Mouse released.”;
tf.setText(msg);
}
public void mouseDragged(MouseEvent me) {
String msg = “Mouse dragged at ” + me.getX()
+ “,” + me.getY();
tf.setText(msg);
}
public void mouseMoved(MouseEvent me) {
String msg = “Mouse moved at ” + me.getX()
+ “,” + me.getY();
tf.setText(msg);
}
}
main.java
package mouseeventsdemo;
/**
*
* @author Ren
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
MouseEventsDemo med = new MouseEventsDemo(“Mouse Events Demo”);
med.launchFrame();
}
}


layout manager (border layout, flow layout, card layout, box layout, grid layout, gridbag layout)

BorderLayout 
  • menyusun komponen berdasarkan lokasi geografis: NORTH, SOUTH, EAST, WEST, and CENTER.
  • Secara optional, kita dapat juga memberikan padding di antara komponen.
  • BorderLayout merupakan layout default untuk JWindow dan JFrame.
  • Karena setiap komponen diasosiasikan dengan suatu arah geografis, akibatnya layout ini hanya dapat menangani maksimal 5 komponen.
CONTOH CODING BorderLayout:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BorderLayoutApp1 extends JFrame {
public BorderLayoutApp1(  ) {
createUserInterface();  
}
private void createUserInterface(){
this.setTitle("Border1");
this.setSize(300, 300);
this.setLocation(200, 200);
this.setLayout(new BorderLayout(  ));
this.add(new JButton("North"), BorderLayout.NORTH );
this.add(new JButton("South"), BorderLayout.SOUTH );
this.add(new JButton("East"), BorderLayout.EAST );
this.add(new JButton("West"), BorderLayout.WEST );
this.add(new JButton("Center"), BorderLayout.CENTER );
this.setVisible(true);
}
public static void main(String[] args) {
BorderLayoutApp1 app = new BorderLayoutApp1();
app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}

FlowLayout 
  • merupakan layout manager yang simpel.
  • FlowLayout menyusun komponen berdasarkan ukuran default masing-masing, dengan posisi mulai dari kiri ke kanan dan dari atas ke bawah di dalam container yang digunakan.
  • FlowLayout dapat memiliki “row justification”: LEFT, CENTER, atau RIGHT serta “padding”  horizontal/vertical.
  • Secara default, flow layout menggunakan justification CENTER. Artinya, semua komponen akan disimpan di posisi tengah-tengah.
  • FlowLayout merupakan default untuk JPanel.
CONTOH CODING FlowLayout:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Flow extends JFrame {
public Flow(  ) {
createUserInterface();
}
private void createUserInterface(){
// FlowLayout is default layout manager for a JPanel
JPanel panel1 = new JPanel();
panel1.setLayout(new FlowLayout()); // !! baris ini dapat dihapus !!
panel1.add(new JButton("One"));
panel1.add(new JButton("Two"));
panel1.add(new JButton("Three"));
panel1.add(new JButton("Four"));
panel1.add(new JButton("Five"));
this.add(panel1);
this.setTitle("Flow");
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
this.setSize(400, 75);
this.setLocation(200, 200);
this.setVisible(true);

public static void main(String[] args) {
Flow app = new Flow();
}
}

CardLayout
  • merupakan layout manager yang mampu menciptakan efek “tumpukan” komponen. Artinya, layout ini tidak memposisikan komponen di lokasi-lokasi tertentu di dalam kontainer, melainkan menampilkannya satu demi satu.
  • Penggunaan CardLayout biasanya untuk membuat
    panel yang bersifat custom-tabbed.
  • Namun, sebenarnya kita dapat membuat panel tersebut dengan menggunakan komponen
    JTabbedPane.
CONTOH CODING CardLayout:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Card extends JPanel {
CardLayout cards = new CardLayout(  );
public Card(  ) {
setLayout(cards);
ActionListener listener = new ActionListener(  ) {
public void actionPerformed(ActionEvent e) {
cards.next(Card.this);
}
};
JButton button;
button = new JButton("one");
button.addActionListener(listener);
add(button, "one");
button = new JButton("two");
button.addActionListener(listener);
add(button, "two");
button = new JButton("three");
button.addActionListener(listener);
add(button, "three");
}
public static void main(String[] args) {
JFrame frame = new JFrame("Card");
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setSize(200, 200);
frame.setLocation(200, 200);
frame.setContentPane(new Card(  ));
frame.setVisible(true);
}
}

BoxLayout
  • Javax.swing memiliki beberapa tambahan layout manager lagi, salah satunya adalah: BoxLayout.
  • Layout manager ini sangat berguna untuk membuat toolbars sederhana atau vertical button bars.
  • Cara kerjanya sangat sederhana yaitu menempatkan komponen dalam satu baris atau satu kolom.
  • Box memiliki beberapa methods yang akan mempermudah kita dalam menggunakan BoxLayout manager, yaitu:
  •  createHorizontalBox() - untuk membuat box horizontal
     createHorizontalGlue() - untuk merekatkan komponen
     createHorizontalStrut(int n) - untuk memberi jarak antar komponen
     createVerticalBox() - untuk membuat box vertical
     createVerticalGlue() - untuk merekatkan komponen
     createVerticalStrut(int n) - untuk memberi jarak antar komponen
CONTOH CODING BoxLayout:

    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.text.Format;
    import java.text.NumberFormat;
    import java.util.Locale;

    import javax.swing.BoxLayout;
    import javax.swing.JFormattedTextField;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;

    public class boxlayout {
    public static void main(String args[]) throws Exception {
    JFrame frame = new JFrame("Jformated Demo | Mata Uang");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Font font = new Font("Tahoma", Font.BOLD, 16);

    JLabel label;
    JFormattedTextField input;
    JPanel panel;

    BoxLayout layout = new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS);
    frame.setLayout(layout);

    Format currency = NumberFormat.getCurrencyInstance(Locale.US);
    label = new JLabel("Mata Uang Amerika:");
    input = new JFormattedTextField(currency);
    input.setValue(1000.25);
    input.setColumns(20);
    input.setFont(font);
    panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    panel.add(label);
    panel.add(input);
    frame.add(panel);

    frame.pack();
    frame.setVisible(true);
    }
    }



GridLayout 
  • menempatkan komponen dalam bentuk “rectangular grid”.  Ada 3 constructor untuk GridLayout:
GridLayout():  membuat layout dengan satu kolom per komponen. 
GridLayout(int rows, int cols): membuat suatu layout berdasarkan jumlah baris dan kolom yang diinginkan.
GridLayout(int rows, int cols, int hgap, int vgap): membuat layout berdasarkan jumlah baris dan kolom yang diinginkan, serta ukuran jarak (gap) horisontal maupun vertical untuk setiap baris dan kolom tersebut.
  • GridLayout menempatkan komponen dengan ur utan dari kiri ke kanan dan dari atas ke bawah.
  • GridLayout akan memaksa setiap komponen untuk menempati space container yang kosong serta membagi rata ukuran space tersebut.
CONTOH CODING GridLayout:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class gridlayout extends JFrame {
public gridlayout(  ) {
createUserInterface();
}
private void createUserInterface(){
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(3, 2));
panel1.add(new JButton("One"));
panel1.add(new JButton("Two"));
panel1.add(new JButton("Three"));
panel1.add(new JButton("Four"));
panel1.add(new JButton("Five"));
this.add(panel1);
this.setTitle("Grid");
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
this.setSize(200, 200);
this.setLocation(200, 200);
this.setVisible(true);
}
public static void main(String[] args) {
gridlayout app = new gridlayout();
}
}

GridBagLayout
  • merupakan layaout manager yang sangat fleksibel. 
  • Layout ini memampukan kita untuk memposisikan komponen relatif terhadap komponen lainnya berdasarkan constraint tertentu.
  • Dengan menggunakan GridBagLayout, kita dapat menciptakan layout apapun juga, tanpa batas.
  • Komponen disusun pada koordinat tertentu pada sebuah grid yang disebut “logical coordinate”.  Logical coordinate berarti bahwa koordinat suatu komponen ditentukan oleh sekumpulan komponen lainnya.
  • Baris dan kolom dari grid tersebut bersifat “stretch” yang bergantung pada size dan constraint yang dimilikinya.
CONTOH CODING GridBagLayout:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class gridbaglayout extends JFrame {
private GridBagConstraints constraints;
public gridbaglayout(  ) {
createUserInterface();
}
private void createUserInterface(){
constraints = new GridBagConstraints(  );
this.setLayout(new GridBagLayout(  ));
int x, y;  // for clarity
this.addGB(new JButton("North"),  x = 1, y = 0);
this.addGB(new JButton("West"),   x = 0, y = 1);
this.addGB(new JButton("Center"), x = 1, y = 1);
this.addGB(new JButton("East"),   x = 2, y = 1);
this.addGB(new JButton("South"),  x = 1, y = 2);
this.setTitle("gridbaglayout");
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
this.setSize(225, 150);
this.setLocation(200, 200);
this.setVisible(true);
}
private void addGB(Component component, int x, int y) {
constraints.gridx = x;
constraints.gridy = y;
this.add(component, constraints);
}
public static void main(String[] args) {
    gridbaglayout app = new gridbaglayout();
}
}


komponen swing (container, panel, dialog)

Container : Merupakan komponen khusus yang berguna untuk menampung komponen GUI lainya.

Panel  : Merupakan jenis dari swing container

Dialog : Merupakan jenis dari swing windows

CONTOH CODING MENGGUNAKAN KOMPONEN SWING

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

public class Form extends JInternalFrame { // pewarisan dari JFrame untuk digunakan di class Form
public Form() {

super(“FORM ANGGOTA”, true, true, true,true);

// PEMBUATAN OBJEK

JPanel panel1 = new JPanel(); // pembuatan panel 1
JPanel panel2 = new JPanel(); // pembuatan panel 1

Container con = this.getContentPane(); // pembuatan ontainer

// Membuat objek option button baru
final JRadioButton rbAnggota1 = new JRadioButton(“Anggota Satu”);
final JRadioButton rbAnggota2 = new JRadioButton(“Anggota Dua”);
final JRadioButton rbAnggota3 = new JRadioButton(“Anggota Tiga”);
final JRadioButton rbAnggota4 = new JRadioButton(“Anggota Empat”);

//Membuat button group
ButtonGroup radioBgroup = new ButtonGroup();

// Membuat label
JLabel lblNIM=new JLabel(“NIM “);
final JLabel lblNama =new JLabel(“Nama “);
final JLabel lblJK =new JLabel(“Jenis Kelamin “);

// Membuat text field
final JTextField txtNIM=new JTextField(5);
final JTextField txtNama=new JTextField(5);
final JTextField txtJK=new JTextField(5);

final JButton cmdTampil=new JButton(“Tampil”);
final JButton cmdKosong=new JButton(“Kosongkan”);
final JButton cmdExit=new JButton(“Keluar”);

// konfigurasi layout

con.setLayout(new GridLayout(1,2)); //

panel1.setLayout(new GridLayout(3,3,2,5));
panel2.setLayout(new GridLayout(6,3,2,5));
panel1.setBorder(BorderFactory.createTitledBorder(“Anggota”));
panel2.setBorder(BorderFactory.createTitledBorder(“Data”));

// menambahkan panel ke window

con.add(panel1);
con.add(panel2);

// mendaftarkan radio button sebagai group
radioBgroup.add(rbAnggota1);
radioBgroup.add(rbAnggota2);
radioBgroup.add(rbAnggota3);
radioBgroup.add(rbAnggota4);

// menambahkan objek ke dalam panel 1
panel1.add(rbAnggota1);
panel1.add(rbAnggota2);
panel1.add(rbAnggota3);
panel1.add(rbAnggota4);

// menambahkan objek ke dalam panel 2
panel2.add(lblNIM);
panel2.add(txtNIM);
panel2.add(lblNama);
panel2.add(txtNama);
panel2.add(lblJK);
panel2.add(txtJK);
panel2.add(cmdTampil);
panel2.add(cmdKosong);
panel2.add(cmdExit);

// memberikan even handling kepada command button

cmdTampil.addActionListener(new ActionListener( ) {
public void actionPerformed(ActionEvent ae) {
if (rbAnggota1.isSelected()){
txtNIM.setText(“07.11.1382″);
txtNama.setText(“Syarief Hidayatulloh”);
txtJK.setText(“laki – laki”);
}
if (rbAnggota2.isSelected()){
txtNIM.setText(“07.11.1356″);
txtNama.setText(“Arif W Nugroho”);
txtJK.setText(“laki – laki”);
}
if (rbAnggota3.isSelected()){
txtNIM.setText(“07.11.1420″);
txtNama.setText(“Galuh Ristyanto”);
txtJK.setText(“laki – laki”);
}
if (rbAnggota4.isSelected()){
txtNIM.setText(“07.11.1385″);
txtNama.setText(“Yuni Ardita Sari Dewi “);
txtJK.setText(“Perempuan”);
}

}

});

cmdKosong.addActionListener(new ActionListener( ) {
public void actionPerformed(ActionEvent ae) {
txtNIM.setText(” “);
txtNama.setText(” “);
txtJK.setText(” “);

}
});

cmdExit.addActionListener(new ActionListener( ) {
public void actionPerformed(ActionEvent ae) {

System.exit(0);
}
});

// menampilkan window
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocation(40,120);
this.setSize(520,230);
this.setVisible(true);
}

}

VIDEO UNTUK TUTORIAL SWING FRAME

pengenalan java basic, java swing dan awt serta editor eclipse

Sejarah Java :
   Java bermula dari penelitian perusahaan sun Microsystems dengan sandi Green tahun 1991. Terdapat predisi bahwa microprosesor akan digunakan luas pada peralatan elektronik. Karna hal tersebut maka dibutuhkan sebuah bahasa pemograman yang dapat berjalan disemua microprosesor
   Tercipta sebuah pemograman baru , oleh James Gosling, yaitu salah satu orang yang berperan besar dalam proyek tersebut program ini diberi nama Oak, karna sudah ada bahasa pemograman yang nama Oak maka diganti denga Java 


Keunggulan Java.

  - Relatif mudah dipelajari.

  - Mudah dikembangkan 

  - Plaftrom Independent


Pemograman Java.
  Dilakukan dengan tiga tahap :
  - Menulis programan java.
  - Melakukan kompilasi programan java.
  - Menjalankan programan java.

Java Swing dan Awt.
    Merupakan package yang berguna untuk membangun aplikasi dengan Grapical User Interface ( GUI ). Package.javax.swing.* berisi class - class yang dapat dipakai untuk membangun tampilan aplikasi serta interaksi antara pengguna dengan program.
      Secara asitektur , Swing dibangun di atas arsitektur Abstract Windows Toolkit ( AWT ). Merupakan package GUI yang sudah lebih kembangkan, AWT memiliki banya kekurangan sehingga diperbaiki dengan adanya Swing. 

CONTOH PENGGUNAAN SWING DAN AWT SEDERHANA:

import java.awt.Color;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class belajardeh {

    private static final ActionListener ActionListener = null;

    public static void main (String[]args){
       
        JFrame frame = new JFrame ("coba-coba");
        frame.getContentPane().setBackground(Color.blue);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);
        frame.setLocationRelativeTo(null);
       
        frame.setLayout(null);
        frame.setVisible(true);
       
        JButton button = new JButton ("press");
        button.addActionListener(ActionListener);
        button.setBounds(10, 20, 120, 20);
        frame.add(button);
   
   
    }
}