Pages

Subscribe:

Labels

JAVA SWING MAKE OVER/SWING X


SwingMakeOver merupakan teknik memanipulasi tampilan User Interfaces (Java Swing). Teknik ini dilakukan dengan menggunakan penggambaran agar tampilan komponen-komponen Java Swing seperti TextField, Button dan lain-lain menjadi lebih cantik kelihatannya.







Kelebihan Swing x
Swing x menawarkan fitur-fitur extra yang tidak ditemui swing secara siap jadi. Sebagai contoh, ada yang disebut sebagai haghlighter untuk memberi highlight (bisa berupa warna background berbeda dan sebagainya) pada sel tertentu pada JxTable, JxList, JxTree dan sebagainya. Komponen yang diawali Jx kebanyakan adalah turunan dari komponen swing standart, misalnya Jxtable adalah turunan dari JTable. Demikian juga JxComboBox adalah turunan dari JComboBox. JxComboBox sudah mendukung fitur highlight dengan adanya fungsi add highlighter(). Jika ingin menampilkan nilai dibawah 50 dengan background merah, di JxComboBox kita dapat menggunakan color Highlighter.

Standard Widget Toolkit (SWT)

Standard Widget Toolkit (SWT) adal`h toolkit widget grafis untuk digunakan denganplatform JavaIni pada awalnya dikembangkan oleh IBM dan sekarang dikelola oleh  Eclipse Foundation in tandem with the Eclipse IDE. Ini adalah sebuah alternatif untukWindow Toolkit Abstrak (AWT) dan Swing Java GUI toolkits disediakan oleh Sun Microsystems sebagai bagian dari Java Platform, Standard Edition.
Untuk menampilkan elemen GUI, pelaksanaan SWT mengakses perpustakaan GUI asli dari sistem operasi menggunakan JNI (Java Native Interface) dengan cara yang mirip dengan program-program ditulis menggunakan sistem operasi spesifik API. Program yang memanggil SWT yang portabel, tetapi pelaksanaan toolkit, meskipun bagian dari itu yang ditulis di Jawa, adalah unik untuk setiap platform.
 
contohpenggunaan SWT
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
 
public class HelloWorld 
{
   public static void main (String[] args) 
  {
      Display display = new Display();
      Shell shell = new Shell(display);
      Label label = new Label(shell, SWT.NONE);
      label.setText("Hello World");
      label.pack();
      shell.pack();
      shell.open();
      while (!shell.isDisposed()) 
      {
         if (!display.readAndDispatch()) display.sleep();
      }
      display.dispose();
   }
}
   
Ada beberapa aktivitas untuk memungkinkan swing  dan SWT digabungkan . Ada dua pendekatan yang berbeda yang berusaha
SwingWT adalah proyek yang bertujuan untuk memberikan pengembang swing swingdengan implementasi alternatif: satu yang menggunakan back end SWT untuk menampilkan widget, sehingga memberikan tampilan asli dan merasa dan keuntungankinerja SWT bersama dengan model pemrograman yang sama seperti swing 
SWTSwing adalah proyek yang bermaksud untuk memberikan back end untuk swingSWT. Akibatnya, SWT dapat dijalankan menggunakan "objek swing asli" ​​bukan, misalnya, objek asli GTK atau Windows. Hal ini akan memungkinkan SWT untuk bekerja pada setiap platform yang mendukung swing

Mulai tahun 2006 terjadi SWT-3.2 port untuk bahasa pemrograman D disebut DWT.Sejak itu proyek ini mendukung Windows 32-bit dan juga Linux GTK 32-bit untukSWT-3.4. Proyek DWT juga memiliki paket addon yang berisi pelabuhan Bentuk JFacedan Eclipse.
 

Enkripsi

Enkripsi  adalah Sebuah proses data encoding untuk mencegah pihak yang tidak berwenang melihat atau memodifikasinya.
Bila Anda bukan seorang paranoid, mungkin sekarang hal tersebut dapat berubah. Bila Anda menggunakan sebuah PC, banyak orang jahat yang dapat mencegat e-mail yang Anda kirim, dan rekan kerja Anda dapat membaca dokumen dari proyek yang tengah Anda kerjakan untuk keuntungan karir mereka. Ada sebuah teknologi yang dapat melindungi data Anda dari mata-mata yang selalu ingin mengintip, enkripsi. Enkripsi adalah sebuah proses data encoding atau pemecahan kode data yang hanya dapat dibaca bila kita memiliki sebuah kunci khusus. Dulu enkripsi hanya berkembang di dunia spionase/perang, tetapi saat ini teknologi tersebut telah merambah ke sektor bisnis dan kalangan pengguna rumahan: Enkripsi adalah tool terbaik untuk melindungi data, privasi, dan rahasia Anda.
Yang perlu Anda ketahui tentang enkripsi:
Mencegah akses yang tidak diinginkan pada dokumen dan pesan e-mail.
Level enkripsi yang tinggi sukar untuk dibongkar.
Perubahan dalam peraturan ekspor teknologi kriptografi akan meningkatkan penjualan software enkripsi.
Sebuah program enkripsi, baik itu yang berdiri sendiri (stand-alone) atau sudah terdapat pada aplikasi e-mail client Anda, memiliki proses yang sama: Data melewati sebuah formula matematis yang disebut algoritma, yang kemudian mengubahnya menjadi data terenkripsi yang disebut sebagai ciphertext. Formula ini memerlukan sebuah variabel dari Anda–yang disebut kunci–untuk mengembalikan data tersebut kembali ke bentuk asal, sehingga sangat sulit, bahkan hampir tidak mungkin, seseorang dapat memecahkan kode enkripsi tersebut. Tetapi tentu saja hal ini tidak berlaku jika orang tersebut berhasil mencuri kode enkripsi dari Anda. Jadi, berhati-hatilah dengan kode enkripsi yang Anda miliki.
Ada dua jenis enkripsi: simetris dan asimetris (juga disebut sebagai public key). Dengan enkripsi simetris, Anda menjalankan sebuah file melalui program dan membuat sebuah kunci yang mengacak file. Kemudian Anda mengirim file terenkripsi melalui e-mail ke si penerima dan secara terpisah mentransmit kunci dekodingnya (mungkin berupa sebuah password atau file data lainnya). Si penerima, dengan menjalankan aplikasi enkripsi yang sama, menggunakan kunci yang Anda berikan untuk menyatukan kembali file yang telah diacak. Enkripsi simetris sangat mudah dan sangat cepat dalam penggunaannya, tetapi tidak seaman enkripsi asimetris, karena seseorang dapat saja mencegat kunci dan mendekoding pesan tersebut. Tetapi karena kecepatannya itu, saat ini enkripsi simetris banyak digunakan pada transaksi e-commerce.
Enkripsi asimetris sangat kompleks–tetapi jauh lebih aman. Diperlukan dua buah kunci yang saling berhubungan: sebuah kunci publik dan sebuah kunci pribadi. Anda membuat kunci publik Anda tersedia bagi siapa saja yang ingin Anda kirim informasi terenkripsi. Kunci tersebut hanya dapat mengenkoding data; ia tidak dapat mendekodingnya. Kunci pribadi Anda terjaga dengan aman bersama Anda. Saat orang-orang hendak mengirim informasi terenkripsi pada Anda, mereka mengenkripsinya menggunakan kunci publik Anda. Saat Anda menerima chipertext tersebut, Anda akan mendekripsikannya dengan menggunakan kunci pribadi Anda. Enkripsi asimetris menambahkan tingkat keamanan pada data Anda, tetapi akibatnya lebih banyak lagi waktu komputasi yang dibutuhkan, sehingga prosesnya menjadi sangat panjang dan lebih lama
 Enkripsi simetris dan asimetris menggunakan dua buah algoritma yang berbeda untuk menghasilkan chipertext. Pada enkripsi simetris, algoritmanya akan memecah-mecah data menjadi potongan-potongan kecil yang disebut blok. Kemudian ia akan mengganti letak huruf, mengubah informasi pada setiap blok menjadi angka, menkompresinya dan memperbesar ukuran data, dan kemudian menjalankannya melalui formula matematis termasuk kunci di dalamnya. Kemudian algoritma mengulangi proses tersebut, kadang-kadang sampai selusin pengulangan. Pada algoritma enkripsi asimetris, memperlakukan teks sebagai sebuah angka yang sangat besar, terus mengkalikannya menjadi angka yang lebih besar, dan kemudian mengkalkulasi sisanya setelah dibagi dengan angka terbesar ketiga lainnya. Akhirnya, angka sisa ini dikonversi menjadi teks kembali. Program enkripsi dapat menggunakan algoritma yang sama secara berbeda, itu sebabnya mengapa para penerima informasi yang terenkripsi harus memiliki program yang sama dengan si pengirim untuk mengenkoding data yang mereka terima. Kunci menjadi potongan akhir yang menyusun teka-teki enkripsi, Kunci ini bermacam-macam jenisnya dalam hal panjang dan kekuatannya. Alasan: semakin panjang kuncinya, semakin besar jumlah kombinasi angka yang timbul. Sebagai contoh, bila program enkripsi Anda menggunakan kunci 128-bit, maka kunci Anda tersebut dapat berupa salah satu kombinasi dari 3,4 trilyun milyar milyar milyar kombinasi–atau 2 pangkat 128 kombinasi–dari angka satu dan nol. Seorang cracker mungkin akan lebih beruntung mendapat lotere dibanding ia harus memecahkan enkripsi tersebut menggunakan metode brutal (brute-force method, yaitu mencoba menebak kombinasi kunci satu per satu sampai mendapatkan kunci yang benar). Sebagai perbandingan, seorang ahli enkripsi menggunakan metode brutal ini dapat memecahkan kode enkripsi simetris 40-bit dalam waktu 6 jam dengan menggunakan PC biasa di rumah. Walau begitu, enkripsi 128-bit masih memiliki beberapa kelemahan; para profesional memiliki teknik yang canggih yang dapat menolong mereka memecahkan kode yang paling sulit sekali pun.

contoh enkripsi sederhana
//  ---------------------------------------------------------

//    Algorithm and Programming in C 

//  ---------------------------------------------------------
//      
//   Author : adhita muslim
//   Written in C Language using MS Visual C++
//   Copyright : 2007  
//        
//  ---------------------------------------------------------
/*
// Encryption (Caesar Cypher)

#include
 
#include

void main()
 
{
 char kata[255];
 int i,n;
 printf("Input string  : ");gets(kata);
 printf("Input value (nilai geser) : ");scanf("%i",&n);
 printf("\n"); for(i=0;kata[i]!='\0';i++) // to lower case
 {
  if(kata[i]>64 && kata[i]<=90)$0D
  {
   kata[i]=kata[i]+32;
  }
 }
 for(i=0;kata[i]!='\0';i++)
 {
  if(kata[i]==32)
   printf(" ");
  else
   printf("%c",((kata[i]-97+n)%26)+97);
 }
 printf("\n");
}

AWT(Abstract Window Toolkit)

AWT(Abstract Window Toolkit) merupakan sekulmpulan library yang tidak tergantung pada platfrom serta digunakan untuk menyederhanakan implementasi user-interface, sedangkan Swing merupakan salah satu cara untuk menginplementasikan pemrograman window pada java,
beda swing dengan awt adalah, bentuk komponen komponen dari kelas swing sama bentuknya pada semua sistem operasi.


Contoh Penggunaan AWT

import java.awt.*;
import java.awt.event.*;
public class GBCal extends Frame{
Panel pTimes=new Panel();
Panel pAps=new Panel();
TextField txTimes9=new TextField("09.00");
TextField txTimes930=new TextField("09.30");
TextField txAps=new TextField("Meet the boss");
GridBagLayout gbl=new GridBagLayout();
GridBagLayout gbBut=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
public static void main(String argv[]){
        GBCal gbc=new GBCal();
        gbc.setLayout(new FlowLayout());
    }

public GBCal() {
    setLayout(gbl);
    //Control the Times panel with a GridBagLayout
    pTimes.setLayout(gbBut);
    //Ensure the componants sit at 
   //the top of the containers
    gbc.anchor=GridBagConstraints.NORTH;
    gbc.gridx=0;
    gbc.gridy=0;
    pTimes.add(txTimes9,gbc);
    gbc.gridx=0;
    gbc.gridy=1;
    pTimes.add(txTimes930,gbc);
    pTimes.setBackground(Color.pink);
    //Re-using gbc for the main panel layout 
    gbc.gridx=0;
    gbc.gridy=0; 
    gbc.ipadx=30;
    add(pTimes,gbc);
    pAps.setLayout(gbBut);
    gbc.gridx=0;
    gbc.gridy=1;
    gbc.ipady=12;
    pAps.add(txAps,gbc);
    gbc.gridx=1;
    gbc.gridy=0;
    gbc.ipadx=100;
    pAps.setBackground(Color.lightGray);
    add(pAps,gbc);
    setSize(300,300);
    setVisible(true);
    }
}

SWING

Swing adalah bagian utama Java GUI widget toolkit.Swing adalah bagian dari Oracle's Java Foundation Classes (JFC)-API untuk menyediakan  graphical user interface (GUI) untuk program Java. Swing dikembangkan untuk menyediakan satu set yang lebih canggih dari komponen GUI dari Abstract Window Toolkit (AWT). Swing memberikan tampilan asli dan merasa bahwa mengemulasi tampilan dan nuansa dari beberapa platform, dan juga mendukung tampilan yang pluggable dan nuansa yang memungkinkan aplikasi untuk melihat dan merasa tidak berhubungan dengan platform yang mendasari. Swing lebih kuat dan fleksibel daripada komponen AWT. Selainkomponen akrab seperti tombol, kotak centang dan label, Swing menyediakan komponen canggih seperti beberapa tab panelpanel gulir, pohon, ;span class="hps">tabel dan daftar. Tidak seperti komponen AWT, Swing komponen tidak diimplementasikan dengan platform kode khususSebaliknya mereka ditulis seluruhnya di Jawa dan karena itu adalah platform-independen. Istilah "ringan" digunakan untuk menggambarkan elemen seperti itu.

 contoh :

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
 
public class SwingExample implements Runnable {
    @Override
    public void run() {
        // Create the window
        JFrame f = new JFrame ("Hello, World!");
 *      // Sets the behaviour for when the window is closed
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // add a label and a button
        f.getContentPane().add(new JLabel("Hello, world!"));
        f.getContentPane().add(new JButton("Press me!"));
        // arrange the components inside the window
        f.pack();
        //By default, the window is not visible. Make it visible.
    *   f.setVisible(true);
    }
 
    public static void main(String[] args) {
        SwingExample se = new SwingExample();
        // Schedules the application to be run at the correct time in the event queue.
        SwingUtilities.invokeLater(se);
    }
}

Event Handling

Event Object merupakan object yang mendiskripsikan sebuah event yang di-trigger oleh event source.
Event Handler merupakan method yang menerima event object dan melakukan respond yang sesuai dengan event object tersebut.
Event Listener merupakan interface yang akan meng-handle event yang terjadi. setiap type event mempunyai interface yang bersesuaian. Listener tersebut harus diimplementasikan oleh class yang akan meng-handle event. Event  listener menerima  berita  dari  event-event  dan  proses-proses  interaksi  user.Ketika  tombol  ditekan,  listener  akan  mengendalikan  dengan  menampilkan  sebuah
informasi yang berguna untuk user.
Event Source merupakan pembangkit / trigger sebuah event objects

 
Inner Class adalah suatu Class yang didefinisikan di dalam Class lain. Dengan kata lain, Inner Class adalah anggota (member) dari Class lain, sama halnya seperti variable dan method. Hal ini mengakibatkan instance dari Inner Class dapat mengakses /berbagi dengan instance dari outer Class-nya. Instance dari Inner Class dapat mengakses semua member dari outer Class-nya, bahkan yang private.

Anonymous Inner Class adalah inner class tanpa nama. Kegunaan dari anonymous inner
class  akan  menyederhanakan  kode-kode  Anda  lebih  lanjut.  Di  bawah  ini  merupakan
modifikasi dari contoh bagian sebelumnya. 
Anonymous class hampir sama seperti interface tapi bedanya class ini bisa langsung membuat instance classnya. Tapi di sini saya ingin menambahkan, menurut sumber yang saya dapat bahwa Anonymous class adalah suatu class yang dibentuk tanpa nama, jadi kita mensubclass suatu class secara langsung


Adapter Class 


Fungsi utama adapter yaitu mengconvert suatu objek agar bisa di gunakan di objek lain di komponen yang sedang berjalan. tujuannya adalah kita bisa melibatkan objek lain yang berbeda pada komponen yang sudah ada tanpa harus mengubahnya. 

Stream IO

Pengertian Stream IO :
- I/O : adalah singkatan dari Input / Output dan mengacu pada transfer data ke atau dari aplikasi.
- Stream : Keadaan dari sebuah file atau sebuah device yang memungkinkan rangkaian item dapat dibaca atau ditulis.

Konsep Dasar Stream IO :
- Untuk membaca, program membuka stream pada sumber ( file, memory, socket) dan membaca informasi secara sekuensial. 

- Untuk menulis, program mengirim informasi ke tujuan dengan cara membuka stream tujuan,selanjutnya menulis informasi secara sekuensial.

Byte stream (8 bit) 
digunakan untuk byte, integer, dan simple data type yang lain. Misal: numerical data, executable programs, dll
Character stream (16bit)
digunakan untuk data tekstual (teks), mendukung unicode. Misal: text files 

Input Stream
Subclass-subclass dari inputStream adalah : AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, PipedInputStream, SequenceInputStream, dan StringBufferInputStream.
Dua method utama dari InputStream adalah :
  • Read : Method ini digunakan untuk membaca stream.
  • Close : Method ini digunakan untuk menutup koneksi input stream.

    Contoh Aplikasi :
    nama project : InputStream.java
    import java.io.*;
    class InputStream {
     public static void main(String[ ] args) throws IOException {
      byte[ ] data = new byte[10];
      System.out.print("Ketik 10 buah karakter :");
      System.in.read(data);
      System.out.print("Karakter yang Anda ketik yaitu : ");
      for(int i=0;i<data.length;i++) {
       System.out.print((char)data[i]);
      }
     }
    }

    ini outputnya :
     

    Output Stream
    Subclass-subclass dari outputStream adalah :
    1. ByteArrayOutputStream : digunakan untuk menuliskan stream menjadi byte array.
    2. FileOutputStream : digunakan untuk menulis pada file
    3. FilterOutputStream : merupakan superclass dari subclass-subclass seperti
    4. DataOutputStream, BufferOutputStream, PrintStream, CheckedOutputStream
    5. ObjectOutputStream : digunakan untuk menuliskan objek pada OutputStream.
    6. PipedOutputStream : digunakan untuk menjadi output dari PipedInputStream.
    Sebagian method-method OutputStream adalah :
    • Voidclose() : Menutup output stream yang aktif dan melepaskan sumber daya terkait dengan stream tersebut
    • Void flush() : Melakukan flush output stream dan memaksa semua byte buffer untuk dituliskan keluar
    • Void write(byte[ ] b) : Menulis sebanyak b.length dari byte array ke output stream
    • Void write(byte[ ] b, int off, int len) : Menuliskan sebanyak len byte dari byte array b dimulai dari index off

      Contoh Aplikasi :
      nama project : OutputStream.java
      import java.io.*;
      class OutputStream {
       public static void main(String[] args) throws IOException {
        byte[] data = {'a','b','c','d','e','f','g'};
        System.out.write(data,3,4);
        //pindah baris
        System.out.write('\n');
        //tulis semua isi array data
        System.out.write(data);
       }
      }

      ini outputnya :