Sistem Pengambilan Keputusan Yang Masih Bodoh ;-) Dengan Java

Assalammu’alaikum …
udah lama gag posting..
kali ini iseng posting soal Ai yang cukup aneh dan hasilnya pun saya sendiri masih bingung heuheuheu…
Soalnya sederhana, mengenai sistem panasehat keungan kemana seseorang berinvestasi.
kasus : Seorang user ingin berkonsultasi, Apakah tepat jika dia berinvestasi pada stock saham IBM ??? (ceritanya.. :D )
nah rule yang ada atau knowledge yang di sediakan simple ajo.. yaitu :
R1 : jika A dan C, Maka E;
R2 : jika D dan C, Maka F;
R3 : jika B dan E, Maka F;
R5 : jika F , Maka G;
dengan data :
A : mempunyai minimal $10000;
B : Lebih Muda dari 30 tahun;
C : Pendidikan Stingkat Universitas;
D : Pendapatan tahunan minimal $ 40000;
E : Investasi Sekuritas;
F : Investasi Grawth Stock
G : Investasi Saham IBM;
simple kan :) )
nah fakta sementara yg didapat pada studi kasus bahwa si user yang nekat beli saham IBM ini memiliki kriteria :
1. Mempunyai uang $1000
2. Umurnya masih dibawah 30 tahun..
nah gmn tuh c komputer bisa baca dan menentukan si user ini pantas mendapatkan yang mana? ataukah cocok jadi pengangguran sajah ??? :) )
Bahasa yang saya pake kebetulan adalah java dengan IDE netBeans :D /, database MySQL, dan kebetulan pake JPA eclipse link karena lagi males bikin DAO dan lain2nya untuk berhubungan dengan service database :) )
nah lalu jangan lupa buat databasenya dulu…
nama database : artint
table :
1. data{no [int auto_increment primary key], Abjad [varchar(2)], Mean [varchar(100)], val [int]}
2. knowledge{no [int auto_increment primary key], rule [varchar(10)], result [varchar(10)]}


lalu… pertama kita bikin projectnya .. diharapkan sudah mengerti bikinnya :D
nah karena memakai MVC, tentunya kita bagi 3 bagian kelasnya yaitu : Model, View, dan Controller… apakah itu? karena lagi males bahas, dilewat aja dulu kali ya… :D
kedua.. import semua library yg dibutuhkan cuman : jdbc dan JPAeclipse Link 2.0 sajah :D ..
trs buat class entitas dan persistence nya … dengan klik kanan projectnya ->pilih “other”->pilih “Persistence” -> Entity From Class Database
lain kali ngbahasa JPA eclipse mungkin ya :D /
ketiga kita buat class View-nya dulu gan… seperti dibawah ini : (memakai kelas yg turunan dari JPanel) ;D
nama kelas : PanelExpert.java
001/*
002 * To change this template, choose Tools | Templates
003 * and open the template in the editor.
004 */
005 
006/*
007 * PanelExpert.java
008 *
009 * Created on Nov 14, 2010, 1:42:41 PM
010 */
011 
012package expertsystem.hendri.karisma.view;
013 
014import javax.swing.JComboBox;
015import javax.swing.JOptionPane;
016import javax.swing.JTextField;
017import expertsystem.hendri.karisma.controller.ControlExpert;
018import expertsystem.hendri.karisma.listener.ListenerExpert;
019import expertsystem.hendri.karisma.model.ModelExpert;
020 
021/**
022 *
023 * @author hendri
024 */
025public class PanelExpert extends javax.swing.JPanel implements ListenerExpert {
026 
027    private ModelExpert model;
028    private ControlExpert controller;
029 
030    /** Creates new form PanelExpert */
031    public PanelExpert() {
032        initComponents();
033 
034        model = new ModelExpert();
035        controller = new ControlExpert();
036 
037        model.setListener(this);
038        controller.setModel(model);
039 
040    }
041 
042    /** This method is called from within the constructor to
043     * initialize the form.
044     * WARNING: Do NOT modify this code. The content of this method is
045     * always regenerated by the Form Editor.
046     */
047    @SuppressWarnings("unchecked")
048    //
049    private void initComponents() {
050 
051        jLabel1 = new javax.swing.JLabel();
052        jLabel2 = new javax.swing.JLabel();
053        jLabel3 = new javax.swing.JLabel();
054        jLabel4 = new javax.swing.JLabel();
055        jLabel5 = new javax.swing.JLabel();
056        jLabel6 = new javax.swing.JLabel();
057        textNama = new javax.swing.JTextField();
058        textUang = new javax.swing.JTextField();
059        textUmur = new javax.swing.JTextField();
060        comboPendidikan = new javax.swing.JComboBox();
061        textPendapatan = new javax.swing.JTextField();
062        jLabel7 = new javax.swing.JLabel();
063        jLabel8 = new javax.swing.JLabel();
064        jLabel9 = new javax.swing.JLabel();
065        jButton1 = new javax.swing.JButton();
066 
067        jLabel1.setText("Masukan Data dibawah Berikut");
068 
069        jLabel2.setText("Nama :");
070 
071        jLabel3.setText("Jumlah Uang Yang Dimiliki :");
072 
073        jLabel4.setText("Umur :");
074 
075        jLabel5.setText("Tingkat Pendidikan Terakhir :");
076 
077        jLabel6.setText("Pendapatan Tahunan :");
078 
079        textUmur.addActionListener(new java.awt.event.ActionListener() {
080            public void actionPerformed(java.awt.event.ActionEvent evt) {
081                textUmurActionPerformed(evt);
082            }
083        });
084 
085        comboPendidikan.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "TK", "SD", "SMP", "SMA", "Perguruan Tinggi" }));
086 
087        jLabel7.setText("$");
088 
089        jLabel8.setText("Tahun");
090 
091        jLabel9.setText("$");
092 
093        jButton1.setText("Tentukan Investasi yang cocok");
094        jButton1.addActionListener(new java.awt.event.ActionListener() {
095            public void actionPerformed(java.awt.event.ActionEvent evt) {
096                jButton1ActionPerformed(evt);
097            }
098        });
099 
100        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
101        this.setLayout(layout);
102        layout.setHorizontalGroup(
103            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
104            .addGap(0, 437, Short.MAX_VALUE)
105            .addGroup(layout.createSequentialGroup()
106                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
107                    .addGroup(layout.createSequentialGroup()
108                        .addGap(12, 12, 12)
109                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
110                            .addGroup(layout.createSequentialGroup()
111                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
112                                    .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING)
113                                    .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING)
114                                    .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING)
115                                    .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.TRAILING)
116                                    .addComponent(jLabel6, javax.swing.GroupLayout.Alignment.TRAILING))
117                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
118                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
119                                    .addGroup(layout.createSequentialGroup()
120                                        .addComponent(jLabel7)
121                                        .addGap(4, 4, 4)
122                                        .addComponent(textUang, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE))
123                                    .addComponent(textNama, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE)
124                                    .addGroup(layout.createSequentialGroup()
125                                        .addComponent(textUmur, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE)
126                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
127                                        .addComponent(jLabel8))
128                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
129                                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
130                                            .addComponent(jLabel9)
131                                            .addGap(3, 3, 3)
132                                            .addComponent(textPendapatan, javax.swing.GroupLayout.PREFERRED_SIZE, 162, javax.swing.GroupLayout.PREFERRED_SIZE))
133                                        .addComponent(comboPendidikan, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE))))
134                            .addComponent(jLabel1)))
135                    .addGroup(layout.createSequentialGroup()
136                        .addGap(114, 114, 114)
137                        .addComponent(jButton1)))
138                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
139        );
140        layout.setVerticalGroup(
141            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
142            .addGap(0, 302, Short.MAX_VALUE)
143            .addGroup(layout.createSequentialGroup()
144                .addContainerGap()
145                .addComponent(jLabel1)
146                .addGap(28, 28, 28)
147                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
148                    .addComponent(jLabel2)
149                    .addComponent(textNama, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
150                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
151                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
152                    .addComponent(jLabel3)
153                    .addComponent(textUang, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
154                    .addComponent(jLabel7))
155                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
156                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
157                    .addComponent(jLabel4)
158                    .addComponent(textUmur, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
159                    .addComponent(jLabel8))
160                .addGap(18, 18, 18)
161                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
162                    .addComponent(jLabel5)
163                    .addComponent(comboPendidikan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
164                .addGap(18, 18, 18)
165                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
166                    .addComponent(jLabel6)
167                    .addComponent(jLabel9)
168                    .addComponent(textPendapatan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
169                .addGap(38, 38, 38)
170                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
171                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
172        );
173    }//
174 
175    public JComboBox getComboPendidikan() {
176        return comboPendidikan;
177    }
178 
179    public void setComboPendidikan(JComboBox comboPendidikan) {
180        this.comboPendidikan = comboPendidikan;
181    }
182 
183    public JTextField getTextNama() {
184        return textNama;
185    }
186 
187    public void setTextNama(JTextField textNama) {
188        this.textNama = textNama;
189    }
190 
191    public JTextField getTextPendapatan() {
192        return textPendapatan;
193    }
194 
195    public void setTextPendapatan(JTextField textPendapatan) {
196        this.textPendapatan = textPendapatan;
197    }
198 
199    public JTextField getTextUang() {
200        return textUang;
201    }
202 
203    public void setTextUang(JTextField textUang) {
204        this.textUang = textUang;
205    }
206 
207    public JTextField getTextUmur() {
208        return textUmur;
209    }
210 
211    public void setTextUmur(JTextField textUmur) {
212        this.textUmur = textUmur;
213    }
214 
215    private void textUmurActionPerformed(java.awt.event.ActionEvent evt) {
216        // TODO add your handling code here:
217}
218 
219    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
220        // TODO add your handling code here:
221        controller.activeExpert(this);
222}
223 
224    // Variables declaration - do not modify
225    private javax.swing.JComboBox comboPendidikan;
226    private javax.swing.JButton jButton1;
227    private javax.swing.JLabel jLabel1;
228    private javax.swing.JLabel jLabel2;
229    private javax.swing.JLabel jLabel3;
230    private javax.swing.JLabel jLabel4;
231    private javax.swing.JLabel jLabel5;
232    private javax.swing.JLabel jLabel6;
233    private javax.swing.JLabel jLabel7;
234    private javax.swing.JLabel jLabel8;
235    private javax.swing.JLabel jLabel9;
236    private javax.swing.JTextField textNama;
237    private javax.swing.JTextField textPendapatan;
238    private javax.swing.JTextField textUang;
239    private javax.swing.JTextField textUmur;
240    // End of variables declaration
241 
242    public void onCheck(ModelExpert model) {
243 
244        JOptionPane.showMessageDialog(this, "Hasilnya adalah "+model.getResult());
245 
246    }
247 
248}
ya klo bingung karena kepanjangan .. ya bikin aja panel ampe kurang lebih kaya gini :

nah kalo udah jadi, (plus udah jadi bikin methode accessor tiap2 inputan/getter dan setter)
nah sekaran bikin deh kelas controll misalnya namanya : ControlExpert.java
01/*
02 * To change this template, choose Tools | Templates
03 * and open the template in the editor.
04 */
05package expertsystem.hendri.karisma.controller;
06 
07import javax.swing.JOptionPane;
08import expertsystem.hendri.karisma.model.ModelExpert;
09import expertsystem.hendri.karisma.view.PanelExpert;
10 
11/**
12 *
13 * @author hendri
14 */
15public class ControlExpert {
16 
17    private ModelExpert model;
18 
19    public void setModel(ModelExpert model) {
20        this.model = model;
21    }
22 
23    public void activeExpert(PanelExpert form) {
24 
25        String nama = form.getTextNama().getText();
26        String uang = form.getTextUang().getText();
27        String umur = form.getTextUmur().getText();
28        String pendidikan = form.getComboPendidikan().getSelectedItem().toString();
29        String pendapatan = form.getTextPendapatan().getText();
30        Integer uangInt;
31        Integer umurInt;
32        Integer pendapatanInt;
33 
34        if (uang.equals("")) {
35            uangInt = new Integer(0);
36        } else {
37            uangInt = new Integer(uang);
38        }
39 
40        if (umur.equals("")) {
41            umurInt = new Integer(0);
42        } else {
43            umurInt = new Integer(umur);
44        }
45        if (pendapatan.equals("")) {
46            pendapatanInt = new Integer(0);
47        } else {
48            pendapatanInt = new Integer(pendapatan);
49        }
50 
51        if (nama.equals("")) {
52            JOptionPane.showMessageDialog(form, "Nama tidak valid!");
53 
54        } else {
55            model.setNama(nama);
56            model.setJumlahUang(uangInt);
57            model.setUmur(umurInt);
58            model.setTingkatPendidikan(pendidikan);
59            model.setPendapatan(pendapatanInt);
60            model.onCheck();
61 
62        }
63 
64    }
65}
nah terus yang ke 4, bikin interface listener buat nyambungin si ketiga kelas td biar poolll.. kecuali hasilnya mau ditangani di kelas model aja.. :D
nama file : ListenerExpert.java
01/*
02 * To change this template, choose Tools | Templates
03 * and open the template in the editor.
04 */
05 
06package expertsystem.hendri.karisma.listener;
07 
08import expertsystem.hendri.karisma.model.ModelExpert;
09 
10/**
11 *
12 * @author hendri
13 */
14public interface ListenerExpert {
15 
16    public void onCheck(ModelExpert model);
17 
18}
owh iya ketinggalan saya buat class untuk service koneksi database yang sifatnya statis.. jd harusnya buat ini dulu :
01/*
02 * To change this template, choose Tools | Templates
03 * and open the template in the editor.
04 */
05 
06package expertsystem.hendri.karisma.database.service;
07 
08import javax.persistence.EntityManager;
09import javax.persistence.EntityManagerFactory;
10import javax.persistence.Persistence;
11 
12/**
13 *
14 * @author hendri
15 */
16public class Database {
17 
18    private static EntityManagerFactory entityManagerFactory;
19    private static EntityManager entityManager;
20 
21    public static EntityManagerFactory getConnection(){
22 
23        if(entityManagerFactory == null){
24            entityManagerFactory = Persistence.createEntityManagerFactory("ExpertSystemPU");
25 
26        }
27        return entityManagerFactory;
28    }
29    public static EntityManager getEntityManager(){
30 
31        if(entityManager == null){
32            entityManager = getConnection().createEntityManager();
33        }
34 
35        return entityManager;
36 
37    }
38 
39}
lanjut kita buat kelas modelnya dengan nama file ModelExpert.java:
001/*
002 * To change this template, choose Tools | Templates
003 * and open the template in the editor.
004 */
005package expertsystem.hendri.karisma.model;
006 
007import java.util.List;
008import javax.persistence.EntityManager;
009import javax.persistence.Query;
010import expertsystem.hendri.karisma.database.entitas.Data;
011import expertsystem.hendri.karisma.database.entitas.Knowledge;
012import expertsystem.hendri.karisma.database.service.database;
013import expertsystem.hendri.karisma.listener.ListenerExpert;
014 
015/**
016 *
017 * @author hendri
018 */
019public class ModelExpert {
020 
021    private String nama;
022    private int jumlahUang;
023    private int umur;
024    private String tingkatPendidikan;
025    private int pendapatan;
026    private String result;
027 
028    public ListenerExpert getListener() {
029        return listener;
030    }
031 
032    public void setListener(ListenerExpert listener) {
033        this.listener = listener;
034    }
035 
036    public String getResult() {
037        return result;
038    }
039 
040    public void setResult(String result) {
041        this.result = result;
042    }
043    private ListenerExpert listener;
044 
045    public int getJumlahUang() {
046        return jumlahUang;
047    }
048 
049    public void setJumlahUang(int jumlahUang) {
050        this.jumlahUang = jumlahUang;
051    }
052 
053    public String getNama() {
054        return nama;
055    }
056 
057    public void setNama(String nama) {
058        this.nama = nama;
059    }
060 
061    public int getPendapatan() {
062        return pendapatan;
063    }
064 
065    public void setPendapatan(int pendapatan) {
066        this.pendapatan = pendapatan;
067    }
068 
069    public String getTingkatPendidikan() {
070        return tingkatPendidikan;
071    }
072 
073    public void setTingkatPendidikan(String tingkatPendidikan) {
074        this.tingkatPendidikan = tingkatPendidikan;
075    }
076 
077    public int getUmur() {
078        return umur;
079    }
080 
081    public void setUmur(int umur) {
082        this.umur = umur;
083    }
084 
085    protected void fireOnCheck() {
086        if (listener != null) {
087            listener.onCheck(this);
088        }
089    }
090 
091    public void onCheck() {
092 
093        String ans = "";
094 
095        EntityManager manager = database.getEntityManager();
096        Query query = manager.createNamedQuery("Data.findAll");
097        List data = query.getResultList();
098 
099        Query queryKnowledge = manager.createNamedQuery("Knowledge.findAll");
100        List know = queryKnowledge.getResultList();
101 
102        if (jumlahUang > 0) {
103            if (jumlahUang >= data.get(0).getVal()) {
104                ans = ans + data.get(0).getAbjad();
105            }
106        }
107        if (umur > 0) {
108            if (umur < data.get(1).getVal()) {                 ans = ans + data.get(1).getAbjad();             }         }         if ((!tingkatPendidikan.equals("")) && tingkatPendidikan.equals(data.get(2).getMean())) {             ans = ans + data.get(2).getAbjad();         }         if (pendapatan > 0) {
109            if (pendapatan >= data.get(3).getVal()) {
110                ans = ans + data.get(3).getAbjad();
111            }
112        }
113 
114        int r1 = 0;
115 
116        for (int i = 0; i < know.size(); i++) {             r1 = ans.indexOf(know.get(i).getRule().charAt(0));             if (know.get(i).getRule().length() >= 2) {
117                int r2 = ans.indexOf(know.get(i).getRule().charAt(1));
118                if ((r1 > -1) && (r2 > -1)) {
119 
120                    r2 = ans.indexOf(know.get(i).getResult());
121 
122                    if (r2 == -1) {
123                        ans = ans + know.get(i).getResult();
124                        i = -1;
125 
126                    }
127                }
128            } else {
129                if (r1 > -1) {
130                    r1 = ans.indexOf(know.get(i).getResult());
131 
132                    if (r1 <= -1) {
133                        ans = ans + know.get(i).getResult();
134                        i = -1;
135 
136                    }
137                }
138            }
139 
140        }
141 
142        for (int i = 0; i < data.size(); i++) {
143            r1 = ans.indexOf(data.get(i).getAbjad());
144            if (r1 != -1) {
145                setResult(data.get(i).getMean() + " dengan urutan " + ans);
146            }
147        }
148        fireOnCheck();
149 
150    }
151}
nah tinggal buat satu class JDialog, atau JFrame, kalo saya pake JDialog..
misal : FormExpert.java
trs tinggal drag semua komponen yang ada di class PanelExpert.java (class View nya) ke JDialog yg kita buat misal yang saya FormExpert.java , nanti codenya jd seperti ini :
01/*
02 * To change this template, choose Tools | Templates
03 * and open the template in the editor.
04 */
05 
06/*
07 * FormExpert.java
08 *
09 * Created on Nov 14, 2010, 1:57:56 PM
10 */
11 
12package expertsystem.hendri.karisma.view;
13 
14/**
15 *
16 * @author hendri
17 */
18public class FormExpert extends javax.swing.JDialog {
19 
20    /** Creates new form FormExpert */
21    public FormExpert(java.awt.Frame parent, boolean modal) {
22        super(parent, modal);
23        initComponents();
24    }
25 
26    /** This method is called from within the constructor to
27     * initialize the form.
28     * WARNING: Do NOT modify this code. The content of this method is
29     * always regenerated by the Form Editor.
30     */
31    @SuppressWarnings("unchecked")
32    //
33    private void initComponents() {
34 
35        panelExpert1 = new expertsystem.hendri.karisma.view.PanelExpert();
36 
37        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
38 
39        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
40        getContentPane().setLayout(layout);
41        layout.setHorizontalGroup(
42            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
43            .addGroup(layout.createSequentialGroup()
44                .addComponent(panelExpert1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
45                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
46        );
47        layout.setVerticalGroup(
48            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
49            .addGroup(layout.createSequentialGroup()
50                .addContainerGap()
51                .addComponent(panelExpert1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
52                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
53        );
54 
55        pack();
56    }//
57 
58    /**
59    * @param args the command line arguments
60    */
61    public static void main(String args[]) {
62        java.awt.EventQueue.invokeLater(new Runnable() {
63            public void run() {
64                FormExpert dialog = new FormExpert(new javax.swing.JFrame(), true);
65                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
66                    public void windowClosing(java.awt.event.WindowEvent e) {
67                        System.exit(0);
68                    }
69                });
70                dialog.setVisible(true);
71            }
72        });
73    }
74 
75    // Variables declaration - do not modify
76    private systemexpert.hendri.karisma.view.PanelExpert panelExpert1;
77    // End of variables declaration
78 
79}
nah kalo gini kan mudah.. Hehehhe…
jangan lupa menghubungkan setiap kelasnya agar bisa saling berkomunikasi .. seperti pada source code yang sudah saya masukan hehhe..
kira2 hasilnya nanti jadi kaya gini :

dan klo dipencet tombolnya “Tentukan Investasi yang Cocok” maka :

sekian.. mohon maaf belum bisa menjelaskan dengan detail dan dengan baik.. karena pertama saya masih belajar menulis artikel yang baik dan benar juga indah, dan kedua nulis artikelnya buru2…
lain kali saya perbaiki dan menambah beberapa bagian yang dirasa perlu dan kurang.. :D /
semoga tulisan yang ribet , gag jelas ini dapat membantu dan bermanfaat :D

Popular Posts