Setiap bentuk code java harus dibentuk dalam bentuk class, biar sebagaimanapun sederhananya. Tidak seperti pemrograman lainnya yang menggunakan konsep OOP sebagai tambahan dan pengembangan dari yang sudah ada sebelumnya. Itulah sebabnya kita mengenal class di C++, Pascal, PHP, tapi masih diperbolehkan untuk tetap menggunakan konsep primitif. Sedangkan pada kasus java dan .NET, OOP merupakan inti utamanya yang harus selalu diikuti dan diterapkan. Awalnya akan sangat membingungkan, tapi sangat mudah untuk langkah pengembangan selanjutnya. Sudah lihat JavaDoc? itu adalah dokumen pemrograman yang paling aneh didunia, pada pandangan pertama. Coba bandingkan dengan MSDN-nya .NET, PHP Manual, atau Delphi Help, JavaDoc cuma serangkaian kamus aneh hampir tanpa contoh penggunaannya. Tapi itulah asiknya OOP, dengan serangkaian aturan yang serupa, yang bisa diterapkan untuk class apa saja, kita bisa membuat apapun yang bisa dibuat dengan java cuma mengandalkan kamus aneh ini.
Class sendiri merupakan serangkaian aturan dan definisi dari program yang akan dibuat. Class harus dibuat menjadi object untuk bisa memanfaatkan program yang ada didalamnya. Keharusan ini membuat perintah 'new', sebuah keyword untuk membuat object dari class, sangat sering ditemui. Pada saat pembuatan object, selain membuat object dengan nama yang ditentukan atau bisa juga cuma sebuah object anonim, juga melaksanakan perintah yang ada dalam constructor. Constructor adalah fungsi khusus dengan nama sama dengan nama class yang dibuat, dengan tipe akses public tanpa penentuan tipe data. Apabila tidak ada constructor, tidak ada proses yang dijalankan bersamaan dengan pembuatan object, dan itu diperbolehkan. Sedangkan pembuatan constructor lebih dari satu untuk tujuan yang berbeda juga diperbolehkan. Dengan sarat, memakai jumlah dan atau tipe data parameter yang berbeda.
public class namaClass{
public namaClass(){
}
public namaClass(String params){
}
public namaClass(int params){
}
}
Sedangkan untuk pengiriman data antar frame, kita menggunakan parameter yang kita sebutkan di constructor ini. Dengan beberapa contoh penggunaannya. Yang jelas, kita harus membuat constructor dengan parameter yang disesuaikan. Constructor hanya dijalankan pada saat pertama kali pembuatan object. Tapi contoh dibawah ini, selain contoh pertama, isi data parameter akan berubah, jadi tidak bersifat statis pada saat runtime.
1. frameOne memanggil sambil mengirimkan parameter string ke frameTwo.
Yang harus dilakukan adalah menyediakan constructor String di frameTwo, selanjutnya menampilkan data yang diterima. Dalam hal ini dalam bentuk JLabel.
public frameTwo(String parameter){
initComponents();
jLabel1.setText(parameter);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
frameTwo obj2=new frameTwo("DATA");
obj2.setVisible(true);
}
2. frameOne memanggil sambil mengirimkan parameter berupa object JtextField ke frameThree. Isinya diambil oleh frameThree.
Ini artinya, Secara runtime, JtextField bisa dimanipulasi bukan hanya dari frameOne sebagai pemilik, tapi juga frameThree. Isi dari JTextField bisa langsung diambil apabila ada perubahan saat runtime melalui tombol JButton. Tapi, frameOne sebagai pemilik JTextField harus diinisialisasi terlebih dahulu, apabila belum, akan terjadi NullPointerException.
Kita harus membuat constructor di frameThree dengan parameter JTextField, Membuat variabel global untuk tempat parameter yang diterima, membuat jLabel1 dan tombol jButton1 untuk mengupdate isinya.
public frameThree(JTextField parameter){
initComponents();
this.parameter = parameter;
jLabel1.setText(this.parameter.getText());
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
jLabel1.setText(parameter.getText());
}
JTextField parameter;
Sekarang coba lakukan perubahan pada JtextField di frameOne, maka Isi dari JLabel di frameThree akan berubah setelah tombol dibawahnya diklik, sesuai isi yang terbaru dari JTextField di frameOne.
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
frameThree obj3=new frameThree(jTextField1);
obj3.setVisible(true);
}
Buat constructor pada frameFour dengan parameter JLabel. Buat jTextField1 dan jButton1 untuk mempengaruhi isi dari label di frameOne.
public frameFour(JLabel parameter) {
initComponents();
this.parameter=parameter;
this.parameter.setText(jTextField1.getText());
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
parameter.setText(jTextField1.getText());
}
public JLabel parameter;
Di frameOne, panggil frameFour dengan melewatkan parameter jLabel1.
Sekarang, panggil frameFour dengan tombol di frameOne, setelah frameFour tampil, lakukan perubahan isi jTextField1, tekan tombolnya, maka isi jLabel1 di frameOne akan berubah.
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
frameFour obj4=new frameFour(jLabel1);
obj4.setVisible(true);
}
Selain itu, buat DefaultCloseOperation dari semua frame selain frame utama menjadi dispose.
Selesai. Sekarang, selali lagi, penerapannya bisa dalam banyak hal. Misalkan dengan mengirimkan parameter berupa JButton sehingga event yang dilakukan bisa dijalankan di frame yang lain. Atau banyak hal lainnya yang melibatkan banyak class dan object secara simultan.
Source Code://///////////////////////////////////////////////////////////////
/* frameOne.java */public class frameOne extends javax.swing.JFrame {
public frameOne() {
initComponents();
}
private void initComponents() {
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jButton3 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("frameOne");
jButton1.setText("panggil FrameTwo dengan mengirim parameter String \"DATA\"");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("panggil frameThree dengan mengirim parameter JTextField1");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jTextField1.setText("jTextField1");
jButton3.setText("panggil frameFour");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jLabel1.setBackground(new java.awt.Color(204, 255, 255));
jLabel1.setText("jLabel1");
jLabel1.setOpaque(true);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(122, 122, 122)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 167, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(27, 27, 27)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jButton1)
.addComponent(jButton2)))
.addGroup(layout.createSequentialGroup()
.addGap(120, 120, 120)
.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 152, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(94, 94, 94)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(36, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(52, 52, 52)
.addComponent(jButton1)
.addGap(31, 31, 31)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton2)
.addGap(38, 38, 38)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton3)
.addContainerGap(31, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
frameTwo obj2=new frameTwo("DATA");
obj2.setVisible(true);
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
frameThree obj3=new frameThree(jTextField1);
obj3.setVisible(true);
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
frameFour obj4=new frameFour(jLabel1);
obj4.setVisible(true);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frameOne().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}
/////////////////////////////////////////////////////////////////////////////////////
/* frameTwo.java */
public class frameTwo extends javax.swing.JFrame {
public frameTwo() {
initComponents();
}
public frameTwo(String parameter){
initComponents();
jLabel1.setText(parameter);
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("frameTwo");
jLabel1.setBackground(new java.awt.Color(204, 255, 255));
jLabel1.setText("jLabel1");
jLabel1.setOpaque(true);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(72, 72, 72)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 239, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(72, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(37, 37, 37)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(65, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frameTwo().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
// End of variables declaration
}
/////////////////////////////////////////////////////////////////////////////////////
/* frameThree.java */
import javax.swing.*;
public class frameThree extends javax.swing.JFrame {
public frameThree() {
initComponents();
}
public frameThree(JTextField parameter){
initComponents();
this.parameter = parameter;
jLabel1.setText(this.parameter.getText());
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("frameThree");
jLabel1.setBackground(new java.awt.Color(204, 255, 255));
jLabel1.setText("jLabel1");
jLabel1.setOpaque(true);
jButton1.setText("update jLabel1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(99, 99, 99)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(75, 75, 75)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 186, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(48, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(33, 33, 33)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(38, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
jLabel1.setText(parameter.getText());
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frameThree().setVisible(true);
}
});
}
JTextField parameter;
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
// End of variables declaration
}
/////////////////////////////////////////////////////////////////////////////////////
/* frameFour.java */
import javax.swing.*;
public class frameFour extends javax.swing.JFrame {
public frameFour() {
initComponents();
}
public frameFour(JLabel parameter) {
initComponents();
this.parameter=parameter;
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton1 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("frameFour");
jButton1.setText("ubah JLabel di frameOne");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jTextField1.setText("jTextField1");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(75, 75, 75)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(25, 25, 25)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 231, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(62, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(43, Short.MAX_VALUE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(32, 32, 32)
.addComponent(jButton1)
.addGap(42, 42, 42))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
parameter.setText(jTextField1.getText());
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frameFour().setVisible(true);
}
});
}
public JLabel parameter;
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}
Berantakan ya? masih nyoba2 pake scribefire soalnya.....
mas mo nanya,.. ada tutorial buat nyimpan, nampilin foto, serta ngedit dan ngapus foto dari database pake prog java ga' klo dbnya pake mysql,.. maklum baru blajar java,... o y mas, satu lg,.. ada tutor tentang swing ekstrim ga'??
ReplyDelete@ Mr. SKHAI
ReplyDeleteGambar memang bisa disimpan di database dengan data type binary, tapi ini cukup riskan.
Cara yang lebih mudah adalah dengan menyimpan gambar dalam bentuk file, sedangkan nama filenya disamakan dengan ID dari record di database.
Saya kurang tahu yang dimaksud dengan "Swing Ekstrim". :-). Tapi untuk e-book java yang menarik contohnya contohnya adalah "Swing Hacks - Tips & Tools For Killer GUIs (2005)". Disana banyak hal yang menarik seperti membuat window yang transparan.
sblmnya mksih y mas utk jwabannya, tp sya msh bngung tntang menyimpan gambar dlm bntuk file dan nma filenya dsamakan dngan id di db trsebut. bsa djelaskan lebih rinci ga' mas?. klo memungkinkan, bsa ga' penjelasannya langsung sama listing programnya,. maklum newbie di program java. makasih y mas,...
ReplyDelete@ Mr. SKHAI
ReplyDeleteIya, kalo sempat saya buatkan artikelnya disini. Kalo sempat lho yah...
sya tunggu y mas artikelnya,..
ReplyDelete@ Mr. SKHAI
ReplyDeleteCoba yang ini, Java-MySql: Aplikasi Database dengan Data Gambar ,
Semoga bisa membantu.
cak q punya tugas nih,n q ga'bisa\
ReplyDeletetugasnya : membuat acak nama qt,trus nma qt itu bs jdi brapa kta dlm dftar kta bhsa indonesia.
tlong bntu dong............
@Black
ReplyDeleteKata adalah kumpulan beberapa huruf yang mempunyai arti.
Kumpulan huruf yang dibentuk secara acak tetapi tidak mempunyai arti tidak bisa dinamakan sebagai kata. Sebuah kumpulan huruf yang dibentuk secara acak dari sebuah nama yang dipisahkan spasi dengan kumpulan huruf yang lain, tetapi tidak mempunyai arti apa-apa, bukanlah sebuah kata.
Kalau tidak salah, itulah pengertian dari kata waktu SD, ngomong-ngomong, Nilai Bahasa Indonesia anda berapa yah? ;)
Jadi, kalaupun harus dibuat program, bayangkanlah sebuah program pintar yang bisa membentuk semua kemungkinan yang ada dari hasil pengacakan sebuah nama, kemudian, membandingkan dengan daftar kata dari KBBI/ Kamus Besar Bahasa Indonesia, Setelah itu menjumlahkan, ada berapa kata yang benar.
Kalau sebuah nama terdiri dari 10 huruf yang berbeda, maka daftar kata acak yang harus dicek adalah
= 2+2!+3!+4!+5!+6!+7!+8!+9!+10!
Setelah itu dibandingkan dengan jumlah kata dalam kbbi sebanyak 90 ribu kata, Jadi jumlah prosesnya adalah
= (2+2!+3!+4!+5!+6!+7!+8!+9!+10!) x 90000
Serius, saya ngga sanggup ngerjain!!!
Akhirnya setelah cari-cari akhirnya ketemu artikel ini. Maklum saya baru memulai Java. Terima kasih atas sharing-nya. Cheers.
ReplyDelete@putude
ReplyDeletebaca juga artikel java yang lain yah
om masih gk ngerti yang :
ReplyDelete2. frameOne memanggil sambil mengirimkan parameter berupa object JtextField ke frameThree.
kok logika saya belum dapet ya?? mohon bimbingan nya.. thx
@Haina
ReplyDeleteBerarti memanggil frame3 sambil mengirimkan objek. Dengan cara ini, semua hal tentang objek tersebut yg berada di frame pemanggil bisa diketahui dari frame pemanggil yang dipanggil. Misalkan text, lebar, warna, dan letaknya.
Mas, saya ga tau ini nyambung ato ga (tp nyambung jg kok mas.. hehe.. biar dijawab).
ReplyDeleteYang mas bahas kn tentang passing parameter antar frame. Kalau saya kan ingin passing nilai antar frame. Tp yg jd permasalahan bukan passing nilainya mas. Misalkan ada 2 form ya mas, form A dan form B. Saya mau menampilkan form B ketika button yg ada di form A di-klik. Lalu saya menggunakan code seperti ini:
private void btnCariActionPerformed(java.awt.event.ActionEvent evt) {
b = new FormB();
this.add(b);
b.setVisible(true);
}
Tp kenapa form B munculnya jd tumpang tindih gitu ya mas dengan form A? Jd, yg muncul seperti 2 form jd satu. Bukan 2 form terpisah. Klo saya hilangkan "this.add(b)", form B tidak mau muncul.
Kira2 caranya gimana ya mas? Makasih u/ jawabannya. :)
@s
ReplyDeleteJawaban saya sebelumnya seharusnya sudah mencukupi, kecuali ada bagian deklarasi yang kurang. Add sebuah frame ke dalam frame yang lain mengakibatkan efek bertumpuk seperti itu.
Saya sudah mengikuti coding yg mas tulis (minus parameter), tp seperti yg saya bilang form B jd ga muncul ketika saya tidak menambahkan this.add(b). Tp kalau saya tambahkan jdnya ya bertumpuk gitu. Ada cara yang terlewatkan oleh saya ga sih mas?
ReplyDeleteprivate void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
frameFour obj4=new frameFour();
obj4.setVisible(true);
}
@ s
ReplyDeletesaya tentu tidak bisa tau bagian apa saja yang kurang. Tapi kalo semua kode diatas dibuat, harusnya bisa. Kalau tanpa parameter dan tanpa add, coba klik tombolnya. Coba lihat di taskbar, seharusnya ada frameFour disitu. Kalau tidak ada, coba lihat pesan error di editor.
Tidak ada pesan error mas. Tapi ya ga bisa kebuka aja. Oia,klo liat dari contoh mas itu JFrame kn ya? Klo aku pake JInternalFrame. Form A dan Form B itu adalah JInternalFrame. Jd, ada bedanya ga ya mas? Ada JFrame untuk MDI Formnya. Sedangkan form A dan B adalah MDI Child-nya.
ReplyDelete@ s
ReplyDelete:-). Jinternalframe tidak bisa berdiri sendiri. Itulah Sebabnya tidah bisa langsung tampil. Dia harus dimasukkan ke dalam komponen penampung misalkan jdesktoppane. Coba cari artikel tentang mdi di blog ini, sudah ada kok.
Mas, maap ya nanya lg. Kalau munculin JInternalFrame dari menu yg ada di MDI,saya uda bisa mas. Saya waktu itu juga liat coding-nya mas yg MDI Window itu. :) Tampung semua JInternalFrame ke dalam desktoppane dan desktoppane itu ditaro di MDI parent-nya kn mas? Tapi klo JInternalFrame1 mau menampilkan JInternalFrame2, apakah di actionPerformed button JInternalFrame1, ada code u/ tampung JInternalFrame2 di desktopPane? Saya coba seperti ini masi ga bisa mas:
ReplyDelete(ini adalah button di form A)
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
FormB b = new FormB();
new MenuUtama().desktop.add(b); //tampung di desktoppane MDI
//parent, bener ga mas? :")
sup.show();
}
@ s
ReplyDeleteJdesktoppane yang ada di form menuutama tidak bisa diubah2 oleh komponen yg ada di form a, karena tidak berhubungan.
Cara yang benar adalah, dari menuutama memanggil frame a sambil mengirimkan parameter berupa jdesktoppane. Coba lihat pengiriman parameter berupa objek.
Selanjutnya tinggal memasukkan frame b kedalam objek ini. :-)
uda bisaaaa!! Haha..makasih ya mas! Maap jg ud ganggu mulu dengan nanya2. Akhirnya bisa jg. Ud 1minggu cuma buat ini doanx, ga ketemu2. -.-"
ReplyDeleteThank you banget ya mas buat pencerahannya! ^o^
Mass, tolong saya
Deletebisa kirim contoh koding nya gak??
Saya masih belum paham tentang yang di bahas oleh mas agus ini
Mohon bantuan nya mas
Ini email saya
Bill14crz@gmail.com
Pak, bisa tolong diberi contoh yang mudah saja. Misalnya dua buah frame, frame satu berisi halaman input nama dan alamat dengan button. Lalu frame kedua, menampilkan nama dan alamat yang di input dari frame satu. Terima kasih dan selamat beraktivitas.
ReplyDelete@ bagudung
ReplyDeleteContoh diatas dibuat per bagian, bahkan yang paling sederhana cuma berisi satu label. Jadi kalau cuma butuh sebuah bagian tinggal ambil bagian itu saja. Mau lebih sederhana yang bagaimana?
Selain itu juga mencakup semua hal dalam topik pengiriman parameter, dari yang paling sederhana sampai yang lebih rumit seperti pengiriman object. Jadi saya anggap sudah mencukupi kebutuhan siapa saja yang mau belajar.
Maaf, pak. Saya mahasiswa TI di Bengkulu. Saya sdh cb prog diatas, tp knp untuk code :
ReplyDelete...
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
frameTwo obj2=new frameTwo("DATA");
obj2.setVisible(true);
}
...
dibawah : obj2.setVisible(true)
saya tambahkan : this. dispose();
Frame pertama masih muncul. Bagaimana caranya, agar ketika frame 2 muncul, frame pertama tertutup, tapi nilai dari frame satu tetap dpt di ambil oleh frame 2. Mohon bantuannya pak, terima kasih pak..
@Anonymous
ReplyDeleteJangan gunakan dispose, tapi setVisible untuk menyembunyikan form lama tapi tetap berjalan di belakang.
this.setVisible(false);
Untuk perbedaannya lihat:
http://om4gus.blogspot.com/2008/07/membuat-multiple-document-interface-mdi.html?showComment=1251083590188#c4115407155720159320
mas.. ada tutorial tentang JAI (java advance imaging) ga? pengen bikin aplikasi deteksi gambar nih
ReplyDelete@afry
ReplyDeletebanyak. http://lmgtfy.com/?q=java+advance+imaging
permisi pak,
ReplyDeletesaya mw tanya klo slah 1 jframe dignti sama jdialog trus data yg dikirim dlm bntuk jButton bgaimna ya?
misalnya saat panggil jdialog;
frameFive obj4 = new frameFive(this, true);
obj4.setVisible(true);
pada isian "(this, true);" saya tdk bsa mmasukkan jbutton.
@Anonim
ReplyDeleteBuat constructor dari class yg merupakan extends dari JDialog terlebih dahulu, setelah itu baru bisa dipanggil. Sederhananya seperti ini:
public class frameFive extends javax.swing.JDialog {
public frameFive(Window owner, Dialog.ModalityType modalityType, JButton jb){
this.jb = jb;
}
public JButton jb;
tRImakasih pak, bagian itu sdah jdi.
ReplyDeletetpi mncul error di bgian main-nya
bagian error codingx:
frameFive dialog = new frameFive(new javax.swing.JFrame(), true);
*cannot find symbol
symbol: constructor frameFive(javax.swing.JFrame, boolean)
sekali lagi tlg ya pak.
@Anonim
ReplyDeleteKarena itu, belum dibuat konstructor.
coba tambahkan constructor function
public frameFive(Window owner, Dialog.ModalityType modalityType, JButton jb){
this.jb = jb;
}
di dalam public class frameFive extends javax.swing.JDialog
sya sdah cba buat pak,
ReplyDeletebgni ya?
public frameFive(java.awt.Frame parent, boolean modal, JButton jb) {
super(parent, modal);
this.jb=jb;
initComponents();
this.setLocationRelativeTo(null);
}
public JButton jb;
maaf pak y klo slah.:)
Ok, sdah pak.
ReplyDeleteTerima kasih..
Tutorial java-nya bsa smakin diperbanyak utk kami yg bru blajar.
@Anonim
ReplyDeleteTinggal tanya saja kalo ada masalah. Nanti saya jawab dalam bentuk artikel java di om4g.us
om, sya ad prtnyaan lgi.
ReplyDeleteDlm jdialog sya truh 1 tabel yg data2nya akan di edit di jframe1. Utk pngiriman parameter brupa jbutton sdah ok. skrg msalahx pada mngirim parameter jtextfield. jka datanya bnyak akn lmyan mrepotkan.
bgaimana mmbuatnya lebih sderhana?
sblumnya trimakasih.
nbkjk
ReplyDeleteom...
ReplyDeletesaya bikin program penjualan...
di program itu ada form login dengan byk petugas, nah gmna caranya supaya ketika login itu di form transaksi pada field nama kasir sesuai dengan user ketika login???
makasih..
@Hanny
ReplyDeleteKalo datanya banyak, akan lebih mudah kalau tidak menggunakan JFame yg sama.
Daripada mengirimkan Jtextfield yg banyak, lebih baik ambil tabelnya yg jadi parameter.
@Anonymous
ReplyDelete1. Kirimkan parameter Nama Login dari Form Login ke Form Transaksi.
2. Di Form Transaksi, Masukkan variabel parameter dari Form Login ke sebuah variabel global
3. Data di variabel global ini bisa diambil untuk ditampilkan
sore om,
ReplyDeletesya mw tnya agak lain dr topik ini.
sya ingin mnampilkan foto ke ireport. fotonya disimpan di folder, bkn dtabase.
apakah pkai pramater jga sprti biasa ya?
mkasih om.
Faisal bertanya ....
ReplyDeleteOM Agus bagaimana prog java-nya
setiap item barang di scan dg barcode
item datanya langsung ke printer dotmatrix atau printer struck
thanks ... om
gak da method yg difungsikan,,
ReplyDeletejdi gak bs jalan di Netbeans.. ~_~
-Pia-
ReplyDeletemas saya mau nanya, ada gk tutorial pembuatan aplikasi deteksi kamera dan cara nyimpan hasil fotonya?
Om.. ada link download source codenya ga??...
ReplyDeletesy masih bingung,, kok yg dari frameOne ke frameThree berhasil....
maksudnya ga berhasil juga.. heheuu..
ReplyDeletepermisi mas, saya mau buat tabel, kalau di klik row tabel tersebut akan muncul frame yg isinya data yg lebih lengkap dari row tabel tersebut.
ReplyDeleteparameternya bisa dijadikan query sql ga ya?
@Anonymous
ReplyDeleteCaranya dengan mengirimkan parameter id dari data tersebut. Setelah itu di frame yg baru bisa akses database untuk menampilkan detail dari data
saya ingin mengirim nilai dari "Object objParam = tabModel.getValueAt(tabelCF.getSelectedRow(),0);
ReplyDeleteString tess = objParam.toString();"
gimana ya?
@dedidedidedi
ReplyDeleteMaksudnya mengirimkan parameter string tess?
Gunakan cara pertama untuk mengirimkan parameter string
makasih tutornya... sangat menbantu.....
ReplyDeleteThis comment has been removed by the author.
ReplyDeletesalam javaners :D
ReplyDeletesangat membantu nagat bang
saya mau nanya bang cotohnya form1 mangil from2 tanpa "dispose form1" setelah form2 di input data kli k ok form1 dispose dan form2 otomatis masuk datanya...klu yang saya ini harus manggil lagi form1 baru keliatan hasilnya...adakah solusi mengatasi hal tersebut ??....mohon maaf bang jika pertanyaanya membingungkan :D ..thnsk bang
@panggabeanlinuxer
ReplyDeleteApakah seperti diatas?
"Di frameOne, panggil frameFour dengan melewatkan parameter jLabel1.
Sekarang, panggil frameFour dengan tombol di frameOne, setelah frameFour tampil, lakukan perubahan isi jTextField1, tekan tombolnya, maka isi jLabel1 di frameOne akan berubah."
coba pakai ini, tutorial untuk mendapatkan value dari frame lain. sudah dicoba dan berhasil :)
ReplyDeletemat malam saya Martin,
ReplyDeletemaaf, boleh tanya tentang program, cara mengirim data ke form lain misalkan ketik hallo kirim ke form dua misalkan. mksh
sungguh membingungkan dengan kalimat nya
ReplyDeleteKak, aku pengen bikin program yang implementasiin 3 form untuk pengiriman data. Gimana caranya kak? Tolong bantuin ya kak, soal nya ini tugas aku
ReplyDeletevan
ReplyDeletekastamonu
elazığ
tokat
sakarya
1UDQWZ
Adıyaman Lojistik
ReplyDeleteTrabzon Lojistik
Muğla Lojistik
Bayburt Lojistik
Bayburt Lojistik
ENMSJC
AA760
ReplyDeleteArdahan Şehirler Arası Nakliyat
Karapürçek Boya Ustası
Amasya Parça Eşya Taşıma
Gümüşhane Parça Eşya Taşıma
Pursaklar Boya Ustası
Çerkezköy Asma Tavan
Kayseri Parça Eşya Taşıma
Yozgat Evden Eve Nakliyat
Uşak Lojistik
DF645
ReplyDeleteBartın Lojistik
Kastamonu Evden Eve Nakliyat
Çerkezköy Motor Ustası
Kastamonu Lojistik
Ünye Yol Yardım
Ankara Şehir İçi Nakliyat
Maraş Şehirler Arası Nakliyat
Tekirdağ Çatı Ustası
Adana Evden Eve Nakliyat
44618
ReplyDeleteSiirt Lojistik
Ardahan Evden Eve Nakliyat
Afyon Lojistik
İzmir Şehirler Arası Nakliyat
Tekirdağ Lojistik
Çerkezköy Boya Ustası
Bitlis Parça Eşya Taşıma
Batman Şehirler Arası Nakliyat
Sinop Lojistik
520E7
ReplyDeleteMamak Fayans Ustası
Hotbit Güvenilir mi
Aksaray Şehirler Arası Nakliyat
Osmaniye Evden Eve Nakliyat
Siirt Şehir İçi Nakliyat
Manisa Parça Eşya Taşıma
Kütahya Lojistik
İstanbul Evden Eve Nakliyat
Kars Lojistik
68827
ReplyDeletehttps://referanskodunedir.com.tr/
6D631
ReplyDeleteen iyi rastgele görüntülü sohbet
Kars Görüntülü Canlı Sohbet
tokat mobil sohbet odaları
erzincan telefonda canlı sohbet
artvin canlı görüntülü sohbet siteleri
erzurum sohbet muhabbet
şırnak random görüntülü sohbet
bitlis rastgele sohbet siteleri
siirt canlı sohbet siteleri ücretsiz
BDEFF
ReplyDeleteKars Bedava Sohbet Uygulamaları
canlı görüntülü sohbet odaları
batman sesli mobil sohbet
Karabük Görüntülü Sohbet Canlı
Amasya Görüntülü Sohbet Uygulamaları Ücretsiz
çankırı mobil sesli sohbet
nanytoo sohbet
edirne telefonda canlı sohbet
rize yabancı sohbet
1A6FF
ReplyDeleteBig Wolf Coin Hangi Borsada
Pitbull Coin Hangi Borsada
Coin Nasıl Kazılır
Binance Kimin
Kripto Para Nasıl Alınır
Görüntülü Sohbet
Hexa Coin Hangi Borsada
Bitcoin Kazanma Siteleri
Coin Madenciliği Nasıl Yapılır
6C60C
ReplyDeleteThreads Takipçi Satın Al
Binance Sahibi Kim
Bitcoin Giriş Nasıl Yapılır
Binance Nasıl Üye Olunur
Shibanomi Coin Hangi Borsada
Clubhouse Takipçi Hilesi
Nonolive Takipçi Satın Al
Görüntülü Sohbet
Clubhouse Takipçi Satın Al
54A3C
ReplyDeletepoocoin
dcent
yearn
dextools
defilama
layerzero
roninchain
arbitrum
eigenlayer
DRGHBDRHYTRH
ReplyDeleteشركة مكافحة حشرات بالاحساء
شركة تسليك مجاري بخميس مشيط EvgSUoHahU
ReplyDeleteشركة تنظيف بخميس مشيط puwgBxamOO
ReplyDelete