Cara Mendapatkan Value dari Frame Lain di Java

Cara Mendapatkan Nilai dari Frame atau Dialog di Java - Tutorial Java kali ini kita akan belajar bagaimana cara mendapatkan value atau nilai atau isi dari sebuah JFrame atau Form. Hal ini berguna saat teman-teman membuat program yang dimana dalam satu transaksi dapat mendapatkan beberapa value dari sebuah objek. Sebagai contoh dalam program penjualan. Pada program tersebut pasti penjual mencatat apa yang dibeli pembeli, dan apa yang dibeli pembeli lebih dari satu jenis. Saat barcode reader dalam kasir tidak berfungsi, kasir pasti akan menginputkan data barcode secara manual, setelah data ditemukan kasir akan memasukkan data tersebut.
Nah, tutorial ini hampir sama konsepnya dengan kasus tersebut. Jadi kita harus mendapatkan nilai dari daftar barang yang ada. Jadi kita tidak perlu mengingat kode barang yang ada.
Dalam program ini, kita akan membuat 2 buah Frame, yang mana satu Frame berisi beberapa JTextField, dan Frame lain berisi sebuah JTable. Ketika salah satu data pada baris JTable di-klik, maka nilai yang ada di JTable akan terisi di JTextField secara otomatis yang mana kedua Frame tersebut berbeda.
Ya, semoga apa yang saya jelaskan di atas sudah membuat gambaran kepada teman-teman tentang apa yang kita buat. Langsung saja kita ke langkah-langkahnya.
1. Buatlah sebuah database dengan MySQL
2. Buatlah sebuah tabel dengan nama 'barang' pada database tersebut dan isi dengan kolom (barang_id, barang_nama, barang_harga)

3. Berikut contoh isi tabel barang:
Mengambil Data dari Frame Lain di Java dengan Database

4. Buatlah sebuah JFrame seperti ini dan beri nama FrmAmbilBarang.java
Mengambil Data dari Frame Lain di Java

5. Buat JFrame lagi, simpan dengan nama FrmDataBarang.java
6. Isi FrmDataBarang.java dengan JTable
Membuat JDialog yang Berisi Data Barang



====== coding untuk FrmAmbilBarang.java ======
7. Deklarasikan Variabel yang digunakan di bawah Class
public String idBrg, namaBrg, hargaBrg;

    public String getIdBrg() {
        return idBrg;
    }

    public String getNamaBrg() {
        return namaBrg;
    }

    public String getHargaBrg() {
        return hargaBrg;
    }

8. Masukkan script ini pada Event action -> actionPerformed pada btnDaftarBarang
FrmDataBarang fDB = new FrmDataBarang();
fDB.fAB = this;
fDB.setVisible(true);
fDB.setResizable(false);

9. Tambah fungsi berikut ke dalam FrmAmbilBarang.java
public void itemTerpilih(){
    FrmDataBarang fDB = new FrmDataBarang();
    fDB.fAB = this;
    txtID.setText(idBrg);
    txtNama.setText(namaBrg);
    txtHarga.setText(hargaBrg);
}


====== coding untuk FrmDataBarang.java ======
10. Untuk di bawah package
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

11. Di bawah Class
public Connection conn;
public Statement stat;
public FrmAmbilBarang fAB = null;

public void koneksi() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/java_nilai_dari_frame_lain", "root", "");

    } catch (ClassNotFoundException | SQLException e) {
        JOptionPane.showMessageDialog(null, "Koneksi Gagal");
        System.out.println(e.getMessage());

    }
}

public final void tampildata() {
    DefaultTableModel tabelBarang = new DefaultTableModel();
    tabelBarang.addColumn("ID BARANG");
    tabelBarang.addColumn("NAMA BARANG");
    tabelBarang.addColumn("HARGA");
    try {
        koneksi();
        String sql = "SELECT * FROM barang";
        stat = conn.createStatement();
        ResultSet rs = stat.executeQuery(sql);

        while (rs.next()) {
            tabelBarang.addRow(new Object[]{
                rs.getString(1),
                rs.getString(2),
                rs.getString(3)
            });
        }
        tblDataBarang.setModel(tabelBarang);
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Ada kesalahan" + e);
    }
}

12. Tambahkan Event Mouse -> mouseClicked pada tabel dan tambahkan kode berikut:
int tabelBarang = tblDataBarang.getSelectedRow();
fAB.idBrg = tblDataBarang.getValueAt(tabelBarang, 0).toString();
fAB.namaBrg = tblDataBarang.getValueAt(tabelBarang, 1).toString();
fAB.hargaBrg = tblDataBarang.getValueAt(tabelBarang, 2).toString();
fAB.itemTerpilih();
this.dispose();

13. Panggil fungsi tampildata(); pada FrmDataBarang() dibawah "initComponents()"
public FrmDataBarang() {
    initComponents(); //<<-- JANGAN DIHAPUS
    tampildata();
}

Selesai, sekarang running pada FrmAmbilBarang.java
Kalau berhasil, tampilan running program akan terlihat seperti ini:
Mengambil Data dari Frame Lain di Java
Mengambil Data dari Frame Lain di Java

Kalau Frame FrmDataBarang.java mau diganti menjadi Dialog, ganti extends java-nya menjadi JDialog

Lalu 'close' FrmDataBarang.java dan buka kembali.
Bila terdapat error seperti ini, pilih 'Allow editing'.
Cara Mengganti JFrame menjadi JDialog

Lalu ganti 'defaultCloseOperation' pada properties dari 'HIDE' menjadi 'DISPOSE'


Nah, itu dia cara mendapatkan value dari Frame lain, semoga bermanfaat untuk teman-teman.
Bagi yang masih kesusahan, saya sediakan source-codenya.
Silakan download disini -> [Server 1] [Server 2]
password: kangsunu

Keyword:
  • Cara Mendapatkan Value dari JDialog Saat Tabel di-Klik
  • Cara Memperoleh Nilai dari Frame Lain dengan JDialog
  • Cara Mendapatkan Value dari Frame Lain yang Berada di Dalam JTable
  • Memperoleh Nilai dari Tabel yang Berada di JDialog
  • Bagaimana cara mendapatkan nilai yang ada di tabel pada frame lain?
  • Mengganti JFrame menjadi JDialog

Kang Sunu

Terimakasih telah membaca tulisan saya yang berjudul Cara Mendapatkan Value dari Frame Lain di Java. Mohon untuk tidak menyalin sebagian atau seluruh isi dari tulisan pada halaman ini tanpa izin dari saya dan tanpa mencantumkan link aktif ke url http://www.kangsunu.web.id/2015/05/cara-mendapatkan-value-dari-frame-lain-di-java.html.
Terimakasih untuk teman-teman yang telah menghargai tulisan saya.

15 Responses to "Cara Mendapatkan Value dari Frame Lain di Java"

  1. FrmDataBarang fDB = new FrmDataBarang();
    fDB.fAB = this; ( Maksud fAB disini apa ya gan ? gak ngeh pas yang disini malah eror dianya )


    ReplyDelete
    Replies
    1. "fAB" itu cuma nama variabel untuk ngambil data dari frame Ambil Barang

      Delete
  2. Kak kalo di setTExt nya ke jintetnalframe gimana ya?

    ReplyDelete
  3. kang, mau nanya. caranya mengakses variable name dari class lain gmana yah? jadi gini, kan saya punya jTabbedPane di class A, nah saya mau memanggil variable name dari jTabbedPane tersebut dari class B, kira-kira gmana caranya ya kang? mohon bantuannya, terimakasih

    ReplyDelete
    Replies
    1. di-include-kan dulu mungkin mas class B-nya, terus dibuat public class-nya.

      kalo teman-teman yang lain ada yang tahu tolong bantuannya untuk menjawab pertanyaan mas ini, makasih :)

      Delete
  4. Kak saya mau nanya.. Kalo tombol button nya ada 2 dan masing2 ngambil data dari tabel yang berbeda bisa ga ya? Kalo bisa bgimana caranya kak makasih

    ReplyDelete
    Replies
    1. bisa saja mba, tinggal buat frame lagi seperti tutorial diatas

      Delete
  5. tolong penjelasannya lagi tentang FDB dan FAB, saya masih ga ngerti, karena beda konsep dengan program yg saya buat.
    tolong dijawab kang, saya butuh untuk tugas

    ReplyDelete
  6. gan.. cara narik data antara tabel gimna ya??
    misal data tabel a kita mau tarik ke tabel b? mohon bantuannya

    ReplyDelete
  7. bagaimana coding button cari kalau mau ditambahkan button cari di frame tabel ?

    ReplyDelete
  8. Kang sama mau masukin ini di mvc saya, tapi kok bingung ya mecah nya satu2...mohon bantuannya
    Terimakasih

    ReplyDelete
  9. permisi kangsunu, boleh nanya ada penjelasan code nya tidak,?ga paham bagian code mana yang bertugas mindahin value nya ke form lain.

    ReplyDelete