Java Programming Tips
Learn The Concept!
Programming Is Not How To Remember Codes But Rather To Understand How It Works
Friday, August 25, 2006
Monday, May 23, 2005
Membuat File Manifest
Manifest File di Java digunakan sebagai informasi identitas aplikasi dalam sebuah archive, terutama Java Archive (JAR).
Manifest File merupakan file dengan format text.berisi informasi dari aplikasi yang
Akan didistribusikan dalam JAR.
Dengan file manifest, anda tidak perlu menjalakan aplikasi dalam JAR dengan cara manual, dalam sistem operasi Windows cukup double click pada file dengan extension .jar
Manifest disimpan dalam file dengan nama MANIFEST.MF dalam direktori META-INF.
Berikut contoh dalam sebuah file manifest,
Manifest-Version: 2.0
Merupakan informasi versi dari file manifest
Main-Class: org.idekreatif.javatips.UsingSwingMenu
Merupakan informasi dari nama class utama yang akan dilaunching oleh Java Virtual Machine.
Name: org/idekreatif/javatips/
Merupakan susunan direktori package.
Sealed: true
Menunjukkan apakah class utama harus berada dalam satu paket JAR atau tidak.
Class-Path: servlet.jar infobus.jar acme/beans.jar
Menentukan library-library tambahan untuk aplikasi yang akan di-run oleh aplikasi.
Berikut ini adalah informasi tambahan mengenai aplikasi anda.
Specification-Title: "Judul Spesifikasi Aplikasi"
Specification-Version: "1.0"
Specification-Vendor: "Perusahaanku, Inc.".
Implementation-Title: "Programku "
Implementation-Version: "versi Programku"
Implementation-Vendor: "Perusahaanku"
Sunday, May 22, 2005
Swing : Membuat DataGrid dengan JTable
//JTable di Swing fungsinya mirip dengan DataGrid di VB/Delphi
//di JTable anda dapat mengisi data dengan
//array 2 dimensi atau vector dalam vector
private JTable _newTable;
public Vector dataRecord = new Vector();
public Vector columnName = new Vector();
public UsingTable(){
super();
init();
addColumn();
addRecord();
_newTable=createTable();
//mendefinisikan ScrollPane untuk Table
//ScrollPane sangat penting agar Table
//Dapat menampilkan nama kolumn dan scroll atas/bawah
JScrollPane apane = new JScrollPane(_newTable);
_newTable.setPreferredScrollableViewportSize(new Dimension(500, 70));
this.getContentPane().add(apane);
}
protected void init(){
this.setTitle("Membuat Table dengan JTable");
this.setSize(600,400);
}
//mendefinisikan kolumn
private void addColumn(){
columnName.add("Kolom 1");
columnName.add("Kolum 2");
columnName.add("Kolum 3");
}
//menambah data kolumn dengan vector dalam vector
private void addRecord(){
//ini vector item yang menyimpan record
Vector aitem = new Vector();
aitem.add("record1kolum1");
aitem.add("record1kolum2");
aitem.add("record1kolum3");
dataRecord.add(aitem);
aitem = new Vector();
aitem.add("record2kolum1");
aitem.add("record2kolum2");
aitem.add("record2kolum3");
dataRecord.add(aitem);
}
//mendefinisikan JTable dengan constructor (vector,vector)
public JTable createTable(){
JTable newTable = new JTable(dataRecord,columnName);
return newTable;
}
Thursday, May 19, 2005
Swing : Pertukaran Data Antar Frame
Seperti halnya pada bahasa pemrograman visual yang lain (VB/Delphi), anda dapat men-set nilai dari variable yang berada di form lain (public variable/attribute).
Bedanya dengan VB/Delphi anda harus mendefinisikan variable yang bisa diakses antar Frame/Form dengan "static". Harus diingat bahwa Frame/Form yang memilik variable tersebut harus sudah diinstance sebelumnya.
contoh :
pada Class FormA -> public static String dataTest=null;
pada Class FormB -> FormA.dataTest="Test 1";
Wednesday, May 18, 2005
Swing : Membuat ToolBar
//Toolbar adalah kumpulan menu-menu dengan icon sebagai shortcut
//dari bagian aplikasi
//Toolbar di SWING merupakan kelompok dari JButton, anda harus
//mendefinisikan dulu button, kemudian tambahkan button tersebut
//ke dalam Toolbar
JButton button1;
JButton button2;
JToolBar toolbar;
public UsingToolBar(){
super();
init();
}
private void init(){
this.setSize(400,400);
this.setTitle("Membuat ToolBar");
//definisikan toolbar
toolbar = new JToolBar("It's MyToolBar" );
//anda dapat men-set apakah toolbarnya bisa floating
//atau tidak, secara default adalah true
toolbar.setFloatable(true);
//membuat button dengan method createButton- lihat
//di method createButton
button1 = createButton("icons/more.gif","test1");
button1.addActionListener(this);
button2 = createButton("icons/hurufA.gif","test2");
//menambahkan button1 dan button2 ke toolbar
toolbar.add(button1);
toolbar.add(button2);
//menambahkan toolbar pada container.
this.getContentPane().add(toolbar,BorderLayout.PAGE_START);
//this.getContentPane().add(button2);
}
//method membuat button, mengurangi peng-kodean yang berulang-ulang
public JButton createButton(String respath,String tooltip){
//mengambil resource path dari file icon
//format icon dalam bentuk raster (gif,jpeg,tif,bmp)
String filepath=this.getClass().getClassLoader().
getResource(respath).getPath();
//mendefinisikan icon dengan interface Icon dan subclassnya ImageIcon;
Icon aimgIcon = new ImageIcon(filepath);
JButton button = new JButton(aimgIcon);
button.setMaximumSize(new Dimension(24,24) );
//menambahkan tooltip pada button;
button.setToolTipText(tooltip);
return button;
}
public static void main(String[] args) {
UsingToolBar aframe = new UsingToolBar();
aframe.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);}
});
aframe.pack();
aframe.show();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(button1) ){
JOptionPane.showMessageDialog(this ,"Halo","Coba Dialog",
JOptionPane.INFORMATION_MESSAGE);
}
}
Swing : Button dengan Icon
JButton button1;
JButton button2;
public CreateButtonIcon(){
super();
init();
}
private void init(){
this.setSize(400,400);
this.setTitle("Membuat Button Yang Memiliki Icon");
//mengatur layout
FlowLayout alayout = new FlowLayout(FlowLayout.LEFT,1,1);
this.getContentPane().setLayout(new FlowLayout());
//membuat button dengan method createButton- lihat
//di method createButton
button1 = createButton("icons/more.gif","test1");
button1.setMaximumSize(new Dimension(10,10) );
button2 = createButton("icons/hurufA.gif","test2");
//menambahkan button pada container.
this.getContentPane().add(button1);
this.getContentPane().add(button2);
}
//method membuat button, mengurangi peng-kodean yang berulang-ulang
public JButton createButton(String respath,String tooltip){
//mengambil resource path dari file icon
//format icon dalam bentuk raster (gif,jpeg,tif,bmp)
String filepath=this.getClass().getClassLoader().
getResource(respath).getPath();
//mendefinisikan icon dengan interface Icon dan subclassnya ImageIcon;
Icon aimgIcon = new ImageIcon(filepath);
JButton button = new JButton(aimgIcon);
//menambahkan tooltip pada button;
button.setToolTipText(tooltip);
return button;
}
public static void main(String[] args) {
CreateButtonIcon aframe = new CreateButtonIcon();
aframe.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);}
});
aframe.pack();
aframe.show();
}
Tuesday, May 17, 2005
Swing : Layout Manager #3 - GridBagLayout
//GridBagLayout adalah layout manager yang mengatur komposisi
//dari komponen dengan aturan dasar grid tetapi lebih fleksibel
//Dengan GrigBagLayout anda dapat menyusun komponen tidak
//harus dengan aturan rata kiri-kanan atau dalam acuan 1 kolum,dsb
//Anda memerlukan class GridBagConstraints sebagai pengatur posisi
private GridBagLayout alayout=null;
private GridBagConstraints aconstraint=null;
public UsingGridBagLayout(){
super();
init();
}
public void init(){
alayout = new GridBagLayout();
aconstraint = new GridBagConstraints();
this.setTitle("Contoh Menggunakan GridBagLayout");
this.setSize(400,400);
this.getContentPane().setLayout(alayout);
//GridBagConstraints.BOTH - menresize komponen secara
//vertikal dan horizontal
aconstraint.fill=GridBagConstraints.BOTH;
JButton button1 = new JButton("Tombol 1");
JButton button2 = new JButton("Tombol 2");
JButton button3 = new JButton("Tombol 3");
JButton button4 = new JButton("Tombol 4");
//men-set constraint ke setiap button
alayout.setConstraints(button1,aconstraint);
alayout.setConstraints(button2,aconstraint);
alayout.setConstraints(button3,aconstraint);
this.getContentPane().add(button1);
this.getContentPane().add(button2);
this.getContentPane().add(button3);
//GridBagConstraints.REMAINDER - menentukan bahwa komponen
//yang diset adalah komponen terakhir, bila ada
//komponen selanjutnya
//maka komponen baru tersebut diletakkan di baris baru.
aconstraint.gridwidth=GridBagConstraints.REMAINDER;
alayout.setConstraints(button4,aconstraint);
this.getContentPane().add(button4);
//gridheight digunakan untuk menentukan jumlah baris
// yang "diambil" oleh komponen
//gridwidth digunakan untuk menentukan jumlah kolom
// yang "diambil" oleh komponen
aconstraint.gridheight=2;
aconstraint.gridwidth=1;
aconstraint.weighty=1.0;
JButton button5 = new JButton("Tombol 5");
alayout.setConstraints(button5,aconstraint);
this.getContentPane().add(button5);
aconstraint.gridheight=1;
aconstraint.weighty=0.0;
aconstraint.gridwidth=GridBagConstraints.REMAINDER;
JButton button6 = new JButton("Tombol 6");
JButton button7 = new JButton("Tombol 7");
alayout.setConstraints(button6,aconstraint);
alayout.setConstraints(button7,aconstraint);
this.getContentPane().add(button6);
this.getContentPane().add(button7);
}
public static void main(String[] args) {
UsingGridBagLayout aframe = new UsingGridBagLayout();
aframe.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);}
});
aframe.pack();
aframe.show();
}
Thursday, May 12, 2005
Menyimpan Data Text (line based) ke File
//sebelumnya kita telah membahas mengenai membaca file text
//sekarang bagaimana dengan menulis filetext dengan format
//yang telah ditentukan
public static void main(String[] args) {
String filepath=WritingTextFile.class.getClassLoader().
getResource("datafile/listmhs.txt").getPath();
System.out.println("filepath:"+filepath);
try {
FileOutputStream aoutstream = new FileOutputStream(filepath);
//Gunakan DataOutputStream untuk menulis text String dengan methods writeUTF
DataOutputStream dataout = new DataOutputStream(aoutstream);
//menyimpan data ke stream
// \n digunakan untuk line entry/baris baru
//gunakan kreatifitas anda untuk menyimpan data dari tiap-tiap field
dataout.writeUTF("01#Adi#Jl.Mahasiswa\n");
dataout.writeUTF("02#Aman#Jl. Kebangsaan\n");
dataout.writeUTF("03#Amin#Jl. Mulia\n");
//men-force stream untuk disimpan ke file;
dataout.flush();
System.out.println("Writing Data Done!");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
ASCII ke Char dan Sebaliknya
//setiap character memiliki nilai ASCII
//di Java untuk mengubah character ke nilai ASCII
//anda cukup melakukan casting ke tipe int dengan (int)
//untuk sebaliknya casting dengan (char)
char a= 'A';
int aint= (int)a;
System.out.println("nilai ASCII dari a : "+aint);
System.out.println("character dari bilangan aint :"+(char)aint);
Saturday, May 07, 2005
Swing : Layout Manager #2 -GridLayout
//Seperti halnya FlowLayout, GridLayout merupakan turunan dari LayoutManager
//untuk mengatur posisi komponen
//Bedanya dengan FlowLayout, GridLayout mengatur komponen dengan komposisi
//baris dan kolum seperti sebuah bentuk table
//yang dipecah merata dengan jumlah baris dan kolum tertentu
public void init(){
this.setSize(300,300);
//definisi Gridlayout dengan memberikan nilai baris=4, kolum=4,
//spasi horisontal=5, spasi vertikal=5
GridLayout alayout = new GridLayout(4,4,5,5) ;
this.getContentPane().setLayout(alayout);
this.getContentPane().add(new JButton("1"));
this.getContentPane().add(new JButton("2"));
this.getContentPane().add(new JButton("3"));
this.getContentPane().add(new JButton("4"));
this.getContentPane().add(new JButton("5"));
}
public UsingGridLayout(){
super();
init();
}
public static void main(String[] args) {
UsingGridLayout anew = new UsingGridLayout();
anew.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);}
});
anew.show();
}
Swing : Layout Manager #1 - FlowLayout
//Dipemrograman Java anda tidak akan menemukan method atau attribute yang
//mengatur komponen secara pixel seperti menentukan berapa pixel left
//dan berapa pixel top,
//Sebagai pengantinya Java menyediakan LayoutManager untuk mengatur posisi
//masing komponen.
//Berikut ini adalah contoh penggunaan
//FlowLayout(LayoutManager yang sederhana)
//FlowLayout adalah turunan dari LayoutManager yang mengatur komponen
//dengan cara mengurut dari kiri-kekanan, posisi tengah
//atau dari kanan-kekiri.
//FlowLayout cocok digunakan untuk mengatur button dan komponen text.
public UsingFlowLayout(){
super();
init();
}
public void init(){
this.setSize(300,300);
//mendefinisikan FlowLayout dengan
//mengatur posisi start component, dan jarak antar komponen
//posisi start component dapat diset dengan LEFT, CENTER dan RIGHT
FlowLayout aflow = new FlowLayout(FlowLayout.LEFT,10,10);
this.getContentPane().setLayout(aflow);
this.getContentPane().add(new JButton("1"));
this.getContentPane().add(new JButton("2"));
this.getContentPane().add(new JButton("3"));
this.getContentPane().add(new JButton("4"));
}
public static void main(String[] args) {
UsingFlowLayout anew = new UsingFlowLayout();
anew.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);}
});
anew.show();
}
Wednesday, May 04, 2005
Swing : Pengenalan Swing #2 - Menu PullDown
//konsep membuat menu pull down pada Swing
//urutan definisi komponennya sbb :
//1. buatlah JMenuBar
//2. buatlah JMenu, tambahkan komponen JMenu pada JMenuBar
// dgn method add()
//3. buatlah JMenuItem, tambahkan komponen JMenuItem pada JMenu
// dgn method add()
//deklarasi component
private JMenuBar jJMenuBar = null;
private JMenu jMenuFile = null;
private JMenu jMenuHelp =null;
private JMenuItem menuOpen=null;
private JMenuItem menuExit=null;
private JMenuItem menuIndex=null;
private JMenuItem menuAbout=null;
//constructor class;
public UsingSwingMenu() {
super();
initialize();
}
//initialisasi component-component
private void initialize() {
this.setJMenuBar(getJJMenuBar());
this.setSize(300,200);
this.setTitle("JFrame");
}
//mendefinisikan Menu Bar
private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) {
jJMenuBar = new JMenuBar();
jJMenuBar.add(getJMenuFile());
jJMenuBar.add(getJMenuHelp());
}
return jJMenuBar;
}
//mendefinisikan Menu "File"
private JMenu getJMenuFile() {
if (jMenuFile == null) {
jMenuFile = new JMenu("File");
menuOpen = new JMenuItem("Open");
menuOpen.addActionListener(this);
menuExit = new JMenuItem("Exit");
//menambah menu item pada Menu "File"
jMenuFile.add(menuOpen);
jMenuFile.add(menuExit);
}
return jMenuFile;
}
//mendefinisikan Menu "Help"
private JMenu getJMenuHelp() {
if (jMenuHelp == null) {
jMenuHelp = new JMenu("Help");
menuIndex = new JMenuItem("Index");
menuIndex.addActionListener(this);
menuAbout = new JMenuItem("About");
menuAbout.addActionListener(this);
//menambah menu item pada Menu "Help"
jMenuHelp.add(menuIndex);
jMenuHelp.add(menuAbout);
}
return jMenuHelp;
}
public static void main(String[] args) {
//mengeset format tampilan window standar java
JFrame.setDefaultLookAndFeelDecorated(true);
UsingSwingMenu amenu = new UsingSwingMenu();
amenu.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);}
});
amenu.show();
}
//tempat eksekusi method dari event component
public void actionPerformed(ActionEvent e) {
if (e.getSource()==menuOpen)
JOptionPane.showMessageDialog(this ,"Ini Hasil Klik Menu Open","Halo", JOptionPane.INFORMATION_MESSAGE);
}
Monday, May 02, 2005
Menggunakan Map/HashMap
//HashMap adalah class implementasi dari Map, Map itu sendiri adalah
//interface yang mempunyai fungsi untuk memetakan nilai dengan key unik.
//HashMap sangat bermanfaat sebagai memory record management, dimana
//tiap record dapat disimpann di sebuah Map, kemudian setiap Map
//diletakkan pada vector, list atau set yang masih turunan dari Collection
//Demikian pula Hashmap sangat baik untuk menghandle resultset dari hasil query
Map arecord= new HashMap();
arecord.put("id","1001");
arecord.put("nama","Adi");
arecord.put("alamat","Jl. Ahmad Yani 22");
//mengambil data map dengan method get()
System.out.println(arecord.get("id"));
System.out.println(arecord.get("nama"));
System.out.println(arecord.get("alamat"));
//Meletakkan map ke vector
Vector mhsList = new Vector();
mhsList.add(arecord);
//menambah record
arecord=new HashMap();
arecord.put("id","1002");
arecord.put("nama","Aman");
arecord.put("alamat","Jl. Kebangsaan 88");
mhsList.add(arecord);
//mencetak virtual table (vector mhsList)
for (int i=0;i<mhsList.size();i++){
System.out.print(((Map)mhsList.get(i)).get("id") +"|");
System.out.print(((Map)mhsList.get(i)).get("nama") +"|");
System.out.println(((Map)mhsList.get(i)).get("alamat") +"|");
}
Sunday, May 01, 2005
JDBC : Select/Query/List Table Record
//jangan lupa import java.sql.*;
//deklarasikan koneksi database
Connection conn=null;
try
{
//definisikan driver untuk Database Mysql,
//setiap Database mempunyai driver yang berbeda-beda,
//kunjungi situs Database yang anda gunakan untuk mendowload JDBC Driver
Class.forName("org.gjt.mm.mysql.Driver");
//Setting connection, ingat setiap database mempunyai model konfigurasi URL yang berbeda
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/testDB",
"root",
"root");
//Definisikan statement
Statement stmt = conn.createStatement();
//Definisikan query beserta ResultSet sebagai buffer hasil query
//khusus untuk SELECT anda harus menggunakan method executeQuery,
//untuk INSERT,DELETE,UPDATE anda harus menggunakan method executeUpdate
ResultSet rs = stmt.executeQuery("SELECT * FROM Table1");
//menampilkan hasil, perulangan sampai end of records
while(rs.next())
{
//mengambil masing-masing record, anda bisa menggunakan method lain
//selain getString, seperti getInt, getDouble, getFloat
System.out.println(
rs.getString("ID") + " || " + rs.getString("NAMA"));
}
rs.close();
stmt.close();
}
//menghandle Exception
catch(SQLException e)
{
System.out.println("SQLException: " + e.getMessage() );
}
catch(ClassNotFoundException e)
{
System.out.println("ClassNotFoundException: " + e.getMessage());
}
finally
{
//Clean up resources, menutup koneksi
if(conn != null)
{
try
{
conn.close();
}
catch (Exception ignored) {}
}
}
