JTree Tanpa Root

Setelah cari cari akhirnya ketemu kalo kita pengen buat JTree tapi rootnya gak mo di tampilkan. supaya gak langsung collapse kalo punya banyak kategori cuman gara2 ada rootnya.
oke langsung aja ke codingnya. ga susah kq, cuman butuh satu baris aja. yaitu

JTree tree=new JTree(bla bla bla);
tree.setRootVisible(false);

cuman butuh root visible false doank. oke. selamat berkarya 😀

Menulis dan Membaca File Properties Java

File Properties biasanya berguna untuk menyimpan username,password database dan host,port untuk koneksi dari aplikasi ke database maupun ke aplikasi lain. 😀 dibawah ini contoh class yang mengurusi membaca file properties untuk digunakan dalam run aplikasi maupun menulis kedalam properties guna merubah password atau username atau host atau port. 😀


public class FileSystem {

    private final static String FILE_HOST = "system/server.properties";
    public final static String KEY_HOST = "host";
    public final static String KEY_PORT = "port";

    public Properties read() {
        try {

            Properties p = new Properties();
            p.load(new FileInputStream(FILE_HOST));
            return p;
        } catch (IOException ex) {
            Logger.getLogger(FileSystem.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "file server.properties not found");
            return null;
        }
    }

    public void writeServer(Properties p) {
        try {
            p.store(new FileOutputStream(FILE_HOST), null);
        } catch (IOException ex) {
            Logger.getLogger(FileSystem.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Database to Excel menggunakan Java

Iseng iseng di tengah kesibukan, karena ada temen yg nanya jg gmana sih jadiin data yg ada di dalam database menjadi excel make java?. Karena saya pernah buat aplikasinya jadi coba saya share gimana buatnya, yg jelas disini kita harus make librari yg bukan bawaannya jdk, disini kita make librarinya apace poi. Untuk lebih jelasnya bisa baca referensi dari blognya kang eko, kang eko jg sebenarnya sudah buat tutorial kayaa gini, tapi dia buatnya diatas maven, jd yg blum terbiasa make maven bakal bingung jalaninnya gimana bukanya juga gimana.hehehe.. oke ini yg dah saya buat, buat klass klass pendukungnya,,

pertama buat databasenya dulu, saya buat dengan nama data. setelah itu buat table dan coba di isi.

CREATE TABLE IF NOT EXISTS `excel` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `biner` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `excel`
--

INSERT INTO `excel` (`id`, `biner`) VALUES
(1, 111101001),
(2, 11100100);

klass pertama : Data.java

package databasetoexcel.model;

/**
 *
 * @author saiful bahri (jepara,1990)
 * https://bahrie27.wordpress.com/
 */
public class Data {
    
    private int biner;

    public Data() {
    }

    public int getBiner() {
        return biner;
    }

    public void setBiner(int biner) {
        this.biner = biner;
    }
    
    
    
}

kelas ke dua : DataImpl.java

package databasetoexcel.model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author saiful bahri (jepara,1990)
 * https://bahrie27.wordpress.com/
 */
public class DataImpl {

    private Connection conn;

    public DataImpl() {
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            String db = "jdbc:mysql://localhost:3306/data";
            String user = "root";
            String pass = "root";
            conn = DriverManager.getConnection(db, user, pass);
        } catch (SQLException ex) {
            Logger.getLogger(DataImpl.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(DataImpl.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(DataImpl.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(DataImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void insertDb(int biner){
        try {
            PreparedStatement ps = conn.prepareStatement("insert into excel values(null,?)");
            ps.setInt(1, biner);
            ps.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(DataImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public List getAll(){
        try {
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery("select *from excel");
            List list = new ArrayList();
            while (rs.next()) {
                Data d=new Data();
                d.setBiner(rs.getInt("biner"));
                list.add(d);
            }
            return list;
        } catch (SQLException ex) {
            Logger.getLogger(DataImpl.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }

    public void deleteAll(){
        try {
            PreparedStatement ps = conn.prepareStatement("delete from excel");
            ps.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(DataImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        
    }

}

kelas ke tiga :JTableToExcelConverter.java (saya ambil dari codenya kang eko).

/*
 *  Copyright 2011 Eko Kurniawan Khannedy.
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *       http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *  under the License.
 */
package databasetoexcel.converter;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JTable;
import javax.swing.table.TableModel;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 *
 * @author Eko Kurniawan Khannedy
 */
public class JTableToExcelConverter {

    private JTable jtable;

    public JTableToExcelConverter(JTable table) {
        this.jtable = table;
    }

    public void convert(File file) {
        // ambil table model
        TableModel tableModel = jtable.getModel();

        // ambil data header table
        List header = new ArrayList();
        for (int i = 0; i < tableModel.getColumnCount(); i++) {
            header.add(tableModel.getColumnName(i));
        }

        // ambil data seluruh tabel
        List<List> data = new ArrayList<List>();

        // ambil data tiap baris
        for (int i = 0; i < tableModel.getRowCount(); i++) {
            List row = new ArrayList();
            for (int j = 0; j < tableModel.getColumnCount(); j++) {
                row.add(tableModel.getValueAt(i, j));
            }
            data.add(row);
        }

        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet();

        HSSFRow rowHeader = sheet.createRow(0);
        for (int i = 0; i < header.size(); i++) {
            HSSFCell rowCell = rowHeader.createCell(i);
            rowCell.setCellValue(header.get(i));
        }

        for (int i = 0; i < data.size(); i++) {
            HSSFRow row = sheet.createRow(i + 1);
            List dataRow = data.get(i);
            for (int j = 0; j < dataRow.size(); j++) {
                HSSFCell cell = row.createCell(j);
                cell.setCellValue(dataRow.get(j).toString());
            }
        }

        FileOutputStream stream = null;
        try {
            stream = new FileOutputStream(file);
            workbook.write(stream);
        } catch (IOException ex) {
            Logger.getLogger(JTableToExcelConverter.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (stream != null) {
                try {
                    stream.close();
                } catch (IOException ex) {
                    Logger.getLogger(JTableToExcelConverter.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
}

setelah itu buat form nya. saya beri nama ViewDataToExcel.java screenshot dibawah.

form

untuk lbh jelas sourcodenya download aja di googlecode.

jfilechooser

ini sceen shotnya ketika menambahkan jfilechooser, kalo caranya g kaya gitu nanti hasinya mawot di framenya hehehe

ini acara menambahkan librari poi.jar nya. librarinya ada di folder /lib yg di download.

lib

Silahkan di download dan di plajari. Semoga bermanfaat.. bagi yg ingin tanya2 dapat chat di gtalk : bahrie172

Presentasi OOP (Inheritence Database ke MySQL dan Oracle)

Alhamdulillah bisa ngeblog lagi.. disini saya ingin menshare hasil presentasi saya kemaren di matakuliah Object Oriented Programming.. disini saya membahas tentang Inheritence atau turunan. jadi pertama saya punya class Database dan kelas tersebut saya turunkan ke kelas DbMySQL dan kelas DbOracle. Jadi dikelas Database tersebut sudah terdapat 3 method yaitu konfigurasi, insert, dan select. untuk insert dan select sendiri dalam mysql dan oracle querynya sama jadi dapat langsung dibuat di database dan nanti tinggal di turunkan. sedangkan untuk konfigurasi pastinya beda antara mysql dan oracle, jadi untuk methode konfigurasi saya bikin abstrak jadi nanti untuk di klas DbMysql dan DbOracle dapat diimplement sendiri dengan cara konfigurasi masing2 database. Disini saya hanya menyediakan satu tabel yaitu tabel matakuliah untuk dijadikan simulasinya..
jadi di mysql dan oracle sama-sama terdapat tabel matakuliah. jadi langkah pertama membuat database dikedua jenis database tersebut dengan diisi tabel matakuliah. lalu membuat class Matakuliah yang isi parameternya id,nama,dosen serta jangan lupa setter getternya

public class Matakuliah {
    
    private String id;
    private String nama;
    private String dosen;

    public Matakuliah() {
    }

    public String getDosen() {
        return dosen;
    }

    public void setDosen(String dosen) {
        this.dosen = dosen;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }
       
}

setelah itu buat class Database sebagai kelas induk

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public abstract class Database {
    
    abstract public Connection getKonfigurasi();
    
    public void insert(Matakuliah mk){
        try {
            PreparedStatement ps=getKonfigurasi().prepareStatement("insert into matakuliah values(?,?,?)");
            ps.setString(1, mk.getId());
            ps.setString(2, mk.getNama());
            ps.setString(3, mk.getDosen());
            ps.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void getAll(){
        try {
            Statement st=getKonfigurasi().createStatement();
            ResultSet rs=st.executeQuery("select *from matakuliah");
            List<Matakuliah> list=new ArrayList<Matakuliah>();
            while(rs.next()){
                Matakuliah mk=new Matakuliah();
                mk.setId(rs.getString("id"));
                mk.setNama(rs.getString("nama"));
                mk.setDosen(rs.getString("dosen"));
                list.add(mk);
            }
            
            for(Matakuliah mk : list){
                System.out.println("");
                System.out.println("-------------------");
                System.out.println("ID Matakuliah : "+mk.getId());
                System.out.println("Nama Matakuliah : "+mk.getNama());
                System.out.println("Dosen : "+mk.getDosen());
                System.out.println("-------------------");
            }
        } catch (SQLException ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

lalu buat class DbMySQL untuk turunan dari class Database

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DbMySQL extends Database{
    private Connection conn;
    @Override
    public Connection getKonfigurasi() {
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                String db="jdbc:mysql://localhost:3306/presentasi";
                String user="root";
                String pass="root";
                conn=DriverManager.getConnection(db, user, pass);
                return conn;
            } catch (SQLException ex) {
                Logger.getLogger(DbMySQL.class.getName()).log(Level.SEVERE, null, ex);
                return null;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(DbMySQL.class.getName()).log(Level.SEVERE, null, ex);
                return null;
            }
        } catch (InstantiationException ex) {
            Logger.getLogger(DbMySQL.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        } catch (IllegalAccessException ex) {
            Logger.getLogger(DbMySQL.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }
    
}

buat class DbOracle sebagai turunan dari class Database

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DbOracle extends Database{
    private Connection conn;
    @Override
    public Connection getKonfigurasi() {
        try {
            try {
                Class.forName("oracle.jdbc.OracleDriver").newInstance();
                String db="jdbc:oracle:thin:@localhost:1521:XE";
                String user="bah";
                String pass="teh";
                conn=DriverManager.getConnection(db, user, pass);
                return conn;
            } catch (SQLException ex) {
                Logger.getLogger(DbOracle.class.getName()).log(Level.SEVERE, null, ex);
                return null;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(DbOracle.class.getName()).log(Level.SEVERE, null, ex);
                return null;
            }
        } catch (InstantiationException ex) {
            Logger.getLogger(DbOracle.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        } catch (IllegalAccessException ex) {
            Logger.getLogger(DbOracle.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }
    
}

setelah itu buat class untuk simulasinya atau untuk demo program nya..

import java.util.Scanner;

public class DemoDatabase {

    public static void main(String[] args) {
        int status;
        int pilihanMysql = 0;
        int pilihanOracle = 0;
        boolean keluar = false;
        boolean keluarAll=false;
        Database db;
        do{
        System.out.println("=====PRESENTASI MATAKULIAH OOP=======");
        System.out.println("");
        System.out.println("Pilih Database yang ingin di pakai ?");
        System.out.println("1. MySQL");
        System.out.println("2. ORACLE");
        System.out.println("3. Keluar");
        System.out.print("Pilih nomor : ");
        Scanner scan;
        scan = new Scanner(System.in);
        status = Integer.parseInt(scan.nextLine());
        do {
            if (status == 1) {
	    keluar=false;
                db = new DbMySQL();
                System.out.println("");
                System.out.println("Database MySQL");
                System.out.println("==============");
                System.out.println("1. Insert data");
                System.out.println("2. Lihat data");
                System.out.println("3. Keluar");
                System.out.print("pilih : ");
                scan = new Scanner(System.in);
                pilihanMysql = Integer.parseInt(scan.nextLine());
                if (pilihanMysql == 1) {
                    Matakuliah mk = new Matakuliah();
                    System.out.print("Masukkan ID Matakuliah : ");
                    scan = new Scanner(System.in);
                    mk.setId(scan.nextLine());
                    System.out.print("Masukkan Nama Matakuliah : ");
                    scan = new Scanner(System.in);
                    mk.setNama(scan.nextLine());
                    System.out.print("Masukkan Dosen : ");
                    scan = new Scanner(System.in);
                    mk.setDosen(scan.nextLine());
                    db.insert(mk);
                    System.out.println("");
	        System.out.print("Semua Data Matakuliah Di Database Oracle");
	        db.getAll();
                } else if (pilihanMysql == 2) {
	        System.out.println("");
	        System.out.print("Semua Data Matakuliah Di Database MySQL");
                    db.getAll();
                
                } else if (pilihanMysql == 3) {
                    keluar = true;
                } else {
                    System.out.println("pilihan salah");
                }
            } else if (status == 2) {
	    keluar=false;
                db = new DbOracle();
                System.out.println("");
                System.out.println("Database Oracle");
                System.out.println("==============");
                System.out.println("1. Insert data");
                System.out.println("2. Lihat data");
                System.out.println("3. Keluar");
                System.out.print("pilih : ");
                scan = new Scanner(System.in);
                pilihanOracle = Integer.parseInt(scan.nextLine());
                if (pilihanOracle == 1) {
                    Matakuliah mk = new Matakuliah();
                    System.out.print("Masukkan ID Matakuliah : ");
                    scan = new Scanner(System.in);
                    mk.setId(scan.nextLine());
                    System.out.print("Masukkan Nama Matakuliah : ");
                    scan = new Scanner(System.in);
                    mk.setNama(scan.nextLine());
                    System.out.print("Masukkan Dosen : ");
                    scan = new Scanner(System.in);
                    mk.setDosen(scan.nextLine());
                    db.insert(mk);
	        System.out.println("");
	        System.out.print("Semua Data Matakuliah Di Database Oracle");
                    db.getAll();

                } else if (pilihanOracle == 2) {
	        System.out.println("");
	        System.out.print("Semua Data Matakuliah Di Database Oracle");
                    db.getAll();

                } else if (pilihanOracle == 3) {
                    keluar = true;
                    
                } else {
                    System.out.println("pilihan salah");
                }
            }else if(status==3){
                keluarAll=true;
            }
        } while (keluar == false);
        }while(keluarAll==false);
    }
}

program ini nantinya masih jalan di console/terminal/cmd saja jadi belum ada tampilan GUI namun sudah dapat digunakan untuk melakukan proses insert serta select dari database database tersebut.

dibawah ini tampilan running program di console : dapat juga di jalankan di cmd sebab java itu multiplatform tinggal di compile dan dijalankan.

db

untuk source dapat didownload di bawah ini :
oh ya untuk driver mysql dan oracle nya itu saya exstrack dari driverJdbc .jar yang mysql dan oracle miliki.. karena ini masih manual jalan di console maka untuk mengimport drivernya pun saya lakukan dengan cara manual dengan cara mengekstraknya. 😀

http://bahrie127.googlecode.com/files/PresentasiPBO.zip

selamat Belajar java beserta Database, serta memahami OOP pastinya.. 😀

Merubah Tampilan Java Desktop

Dalam postingan kali ini saya ingin berbagi cerita tentang bagaimana membuat tampilan java desktop supaya menjadi lebih cantik karena secara default tampilan java tidak gitu enak di pandang (kotak kotak), namun cukup menambakan sedikit source dan mengimport sedikit library tampilan java bisa berubah menjadi wah, jauh dari yg dbayakan dan diomongkan orang orang kalo tampilan java itu jelek dan lebih bagus pemrograman ini dan itu. dibawah ini nanti saya kasih screenshotnya. 😀

default
tampilan default java

mac
tampilan mac

aero
tampilan Aero

grapite
tampilan graphite

acry
tampilan acry

Tampilan tampilan diatas sangatlah mudah dipasang hanya tinggal menambahkan code dibawah ini dibawah main nya java,
namun sebelumnya anda harus mengimport dulu library JTatto.jar kedalam library program. kalo lewat IDE Netbeans atau Eclipse cukup mudah cara memasukkan librarynya. untuk JTatto.jar nya dapat di download di http://jtatto.net/

try {
           UIManager.setLookAndFeel(new BernsteinLookAndFeel());
        } catch (UnsupportedLookAndFeelException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

Contoh code lengkap class Main.java nya :

public class Main {

    public static void main(String[] args) {
        try {
           UIManager.setLookAndFeel(new BernsteinLookAndFeel());
        } catch (UnsupportedLookAndFeelException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                Mahasiswa mhs=new Mahasiswa();
                mhs.setVisible(true);
            }
        });
    }

}

Untuk LookAndFeel lainnya dapat dilihat dibawah ini:

lookandfeel
Look And Feel

Selamat mencoba tampilan baru dan Enjoy dengan pemrograman java Desktop.. semoga pemrograman menjadi semakin menyenangkan.. 😀

—–
oh ya jtatto.jar juga sudah saya sertakan dalam library aplikasi toko buku yang sudah saya upload di googlecode.. sudah ada di postingan sebelumnya..

http://bahrie127.googlecode.com/files/LibTokoBuku.zip