Hai, cukup memakan waktu untuk project ini selesai di-finalkan. Hal ini juga dipengaruhi berbagai faktor untuk menulis artikel. Sebelum melanjutkan ke bawah, pastikan kalian sudah membaca part 1 dan part 2. Karena tanpa kedua part sebelumnya tadi maka project tidak akan selesai. Nah langsung saja, buatlah class baru dalam package yang sama dengan class StructTree dan beri nama Tree. Nama yang digunakan haruslah Tree karena kode dibawah ditulis dalam kelas Tree. Setelah membuat class baru tersebut, silahkan copy kode dibawah kedalam class Tree.
Setelah kode diatas di copy, silahkan di compile dan lihat hasilnya. Yap sebuah program desktop berhasil kalian buat.
Jika ingin mencoba programnya saja, bisa download disini : tree
Cek terus project-project yang akan saya buat. Terimaksih semoga bermanfaat.
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
import java.awt.Font;
import java.awt.SystemColor;
import java.awt.Color;
import java.awt.Cursor;
import javax.swing.SwingConstants;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.UIManager;
public class Tree {
private JFrame frame;
private JTextArea tampil;
private JTextField number;
private JTextField level;
private JTextField daun;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Tree window = new Tree();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Tree() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame("Binary Tree");
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
frame.setResizable(false);
StructTree mytree = new StructTree();
JButton btnInsert = new JButton("Insert");
btnInsert.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
btnInsert.setForeground(Color.BLACK);
btnInsert.setBackground(SystemColor.controlHighlight);
btnInsert.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
btnInsert.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int tambah;
try{
tambah = Integer.parseInt(number.getText());
if(mytree.level(mytree.root)-1<5){
if(mytree.find(tambah)==null){
mytree.insert(tambah);
}
else{
JOptionPane.showMessageDialog(null, "Angka sudah dimasukkan");
}
}
else{
JOptionPane.showMessageDialog(null, "Level maksimum 5");
}
// Create a stream to hold the output
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
// IMPORTANT: Save the old System.out!
PrintStream old = System.out;
// Tell Java to use your special stream
System.setOut(ps);
// Print some output: goes to your special stream
mytree.print();
// Put things back
System.out.flush();
System.setOut(old);
// Show what happened
String tree = baos.toString();
tampil.setText(tree);
level.setText(Integer.toString(mytree.level(mytree.root)-1));
daun.setText(Integer.toString(mytree.nbDaun(mytree.root)));
} catch(Exception e){
JOptionPane.showMessageDialog(null, "Input tidak valid");
number.setText("");
}
}
});
btnInsert.setBounds(307, 59, 117, 37);
frame.getContentPane().add(btnInsert);
JButton btnDelete = new JButton("Delete");
btnDelete.setForeground(Color.BLACK);
btnDelete.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
btnDelete.setBackground(SystemColor.controlHighlight);
btnDelete.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg1) {
int kurang;
try{
kurang = Integer.parseInt(number.getText());
if(mytree.level(mytree.root)-1>0){
if(mytree.find(kurang)!=null){
mytree.hapus(mytree.root,kurang);
}
else{
JOptionPane.showMessageDialog(null, kurang+" Tidak ada di dalam tree");
}
}
else{
JOptionPane.showMessageDialog(null, "Tidak bisa menghapus node akar");
number.setText("");
}
// Create a stream to hold the output
ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
PrintStream ps2 = new PrintStream(baos2);
// IMPORTANT: Save the old System.out!
PrintStream old2 = System.out;
// Tell Java to use your special stream
System.setOut(ps2);
// Print some output: goes to your special stream
mytree.print();
// Put things back
System.out.flush();
System.setOut(old2);
// Show what happened
String tree = baos2.toString();
tampil.setText(tree);
level.setText(Integer.toString(mytree.level(mytree.root)-1));
daun.setText(Integer.toString(mytree.nbDaun(mytree.root)));
} catch(Exception e1){
JOptionPane.showMessageDialog(null, "Input tidak valid");
number.setText("");
}
}
});
btnDelete.setBounds(307, 107, 117, 37);
frame.getContentPane().add(btnDelete);
JButton btnSearch = new JButton("Search");
btnSearch.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg2) {
int cari;
try{
cari = Integer.parseInt(number.getText());
if(mytree.find(cari)!=null){
JOptionPane.showMessageDialog(null, cari+" Ada di dalam tree");
}
else{
JOptionPane.showMessageDialog(null, cari+" Tidak ada di dalam tree");
}
} catch(Exception e2){
JOptionPane.showMessageDialog(null, "Input tidak valid");
number.setText("");
}
}
});
btnSearch.setForeground(Color.BLACK);
btnSearch.setBackground(SystemColor.controlHighlight);
btnSearch.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
btnSearch.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
btnSearch.setBounds(307, 155, 117, 37);
frame.getContentPane().add(btnSearch);
tampil = new JTextArea();
tampil.setBackground(Color.WHITE);
tampil.setDisabledTextColor(Color.WHITE);
tampil.setEditable(false);
tampil.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 11));
tampil.setBounds(10, 11, 287, 203);
frame.getContentPane().add(tampil);
tampil.setColumns(10);
tampil.setLineWrap(true);
number = new JTextField();
number.setHorizontalAlignment(SwingConstants.CENTER);
number.setBackground(SystemColor.text);
number.setForeground(Color.BLACK);
number.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
number.setBounds(307, 11, 117, 37);
frame.getContentPane().add(number);
number.setColumns(10);
JButton btnClose = new JButton("Close");
btnClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg3) {
String ObjButtons[] = {"Yes","No"};
int pilihan = JOptionPane.showOptionDialog(null,"Apakah Anda Yakin Ingin keluar ?","Message",JOptionPane.DEFAULT_OPTION,JOptionPane.QUESTION_MESSAGE,null,ObjButtons,ObjButtons[1]);
if(pilihan == 0){
JOptionPane.showMessageDialog(null,"Credit :\nMUHAMMAD JUNDANA AB - 24010314130069\nGALIH DEA PRATAMA - 24010314130080\nHAFIDH AULIA WIRANDI - 24010314130095\nMUHAMMAD WAGE JULI S - 24010314130114 ");
System.exit(0);
}
}
});
btnClose.setForeground(Color.BLACK);
btnClose.setBackground(SystemColor.controlHighlight);
btnClose.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
btnClose.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
btnClose.setBounds(307, 212, 117, 37);
frame.getContentPane().add(btnClose);
JLabel lblLevel = new JLabel("Level :");
lblLevel.setBounds(10, 225, 86, 14);
frame.getContentPane().add(lblLevel);
level = new JTextField();
level.setBorder(null);
level.setBackground(UIManager.getColor("Button.background"));
level.setBounds(100, 222, 22, 20);
frame.getContentPane().add(level);
level.setColumns(10);
JLabel lblDaun = new JLabel("Jumlah daun :");
lblDaun.setBounds(10, 245, 86, 14);
frame.getContentPane().add(lblDaun);
daun = new JTextField();
daun.setBorder(null);
daun.setBackground(UIManager.getColor("Button.background"));
daun.setBounds(100, 242, 22, 20);
frame.getContentPane().add(daun);
daun.setColumns(10);
}
}
Setelah kode diatas di copy, silahkan di compile dan lihat hasilnya. Yap sebuah program desktop berhasil kalian buat.
Jika ingin mencoba programnya saja, bisa download disini : tree
Cek terus project-project yang akan saya buat. Terimaksih semoga bermanfaat.
Tidak ada komentar:
Posting Komentar