Tampilkan postingan dengan label Tugas Java. Tampilkan semua postingan
Tampilkan postingan dengan label Tugas Java. Tampilkan semua postingan

Kamis, 08 Maret 2012

Memulai SWT

  • Anda membutuhkan "link" ke pustaka SWT. Ada dua cara untuk melakukannya :
  1. Menggunakan pustaka SWT bawaan dari Eclipse. Untuk ini Anda tidak perlu mendownload apa-apa. Pustaka SWT bawaan eclipse terdapat pada direktori Eclipse Anda, misalnya pada Windows (C:\eclipse\plugins\org.eclipse.swt.win32.win32.x86_3.4.1.v3449c.jar) atau pada Linux (eclise/plugins/org.eclipse.swt.gtk.linux.x86_3.4.1.v3452b.jar)
  2. Menggunakan pustaka SWT beserta sumber kodenya untuk dokumentasi lebih lengkap. Pustaka SWT ini bisa diunduh pada alamat berikut : http://www.eclipse.org/swt/. Pilih Releases -> Stable -> (platform Anda, misalnya Windos atau Linux). Setelah diunduh, import ke dalam Eclipse seperti Anda mengimport proyek-proyek pada website ini, yaitu dengan File -> Import -> General -> Existing Projects Into Workspace -> Select Archieve File -> (file zip SWT hasil download) -> Finish. Langkah ini hanya dilakukan satu kali saja.
  • Buat proyek baru dari Eclipse, File -> New -> Java Project, kemudian isi Project Name dengan HelloSWT dan click Next
  • Kita harus menambahkan pustaka SWT ke dalam proyek kita.
  1. Jika Anda menggunakan SWT bawaan Eclipse seperti di atas, pilih halaman Libraries. Klik Add External JAR, kemudian navigasi ke direktori plugin di dalam instalasi Eclipse Anda. Misalnya di komputer saya, direktori itu berada di C:\eclipse\plugins. Pilih JAR untuk SWT pada direktori tersebut. Namanya tergantung dari sistem operasi Anda, misalnya pada Windows file ini bernama org.eclipse.swt.win32.win32.x86_3.4.1.v3449c. Klik OK setelah file ini ditambahkan di dalam folder Libraries.
  1. Jika Anda mengunduh proyek SWT, pilih halaman Projects. Klik Add, kemudian tambahkan org.eclipse.swt. Kemudian klik OK setelah proyek ini ditambahkan.
  • Folder proyek baru akan dibuat, seperti pada gambar berikut. 
  • Kemudian klik kanan pada folder src, dan pilih New -> Class. Isi nama kelas dengan HelloSWT, nama package dengan helloswt, dan tik "public static void main(String[] args)" untuk membuat metode main() secara otomatis.
  • Ketik kode berikut ini di dalam metode main()
Display display = new Display();
        Shell shell = new Shell(display);
        shell.setLayout( new RowLayout());
        Label label = new Label(shell, SWT.NONE);
        label.setText("Hello, World!");
        shell.pack();
        shell.open();
        while (!shell.isDisposed())
            if (!display.readAndDispatch())
                display.sleep();
        display.dispose();
        label.dispose();
  • Perhatikan bahwa Display, Shell, RowLayout dan Label diberi tanda merah sebagai tanda bahwa kesalahan program terjadi.
  • Sekarang pindahkan mouse Anda pada kesalahan pada kelas Display. Eclipse akan memberi tahu Anda kesalahan apa yang terjadi. Pada contoh ini, kelas 'Display' belum diketahui oleh Eclipse. Klik pada pilihan Import 'Display' (org.eclipse.swt.widgets).  Lihat sekarang di awal program Anda Eclipse menambahkan import org.eclipse.swt.widgets.Display; secara otomatis.
  • Lakukan hal yang sama pada semua kesalahan, yaitu Shell, Label, RowLayout dan SWT.NONE, sehingga tidak ada lagi kesalahan yang dilaporkan oleh Eclipse.
  • Untuk menjalankan program Anda, klik tombol Run seperti pada gambar berikut.
  • Berikut ini adalah tampilan program SWT pertama Anda.









Package java.lang

Class Math
Java  juga  menyediakan  konstanta  dan  method  untuk  menunjukkan  perbedaan  operasi
matematika  seperti  fungsi  trigonometri  dan  logaritma.  Selama  method-method  ini
semua  static,  Anda  dapat  menggunakannya  tanpa  memerlukan  sebuah  objek  Math.
Untuk  melengkapi  daftar  konstanta  dan  method-method  ini,  lihatlah  acuan  pada
dokumentasi  Java  API.
berikut adalah contih programnya :
public class LatMath
{
        public static void main(String[] args)
        {
        double x, y;

        x = -37.33;
        System.out.println();
        System.out.println("x               = " + x);
        System.out.println("Math.abs(x)     = " + Math.abs(x));


        x = 2.356194490192345;
        System.out.println();
        System.out.println("x               = " + x);
        System.out.println("Math.tan(x)     = " + Math.tan(x));

        x = 21;
        y = -37;
        System.out.println();
        System.out.println("x               = " + x);
        System.out.println("y               = " + y);
        System.out.println("Math.max(x,y)   = " + Math.max(x,y));

        x = 2;
        y = 3;
        System.out.println();
        System.out.println("x               = " + x);
        System.out.println("y               = " + y);
        System.out.println("Math.pow(x,y)   = " + Math.pow(x,y));

        System.out.println();
        System.out.print("Math.random()     :");
        for(int i=0;i<3;i++)
        {
            System.out.print("  " + Math.random());
        }
        System.out.println();



        x = 225;
        System.out.println();
        System.out.println("x               = " + x);
        System.out.println("Math.sqrt(x)    = " + Math.sqrt(x));


        x = 135;
        System.out.println();
        System.out.println("x               = " + x);
        System.out.println("Math.toRadians()= " + Math.toRadians(x));

        }
}
 
Setelah terlebih dahulu set variabel lingkungan PATH dan CLASSPATH. 
 
$ javac LatMath.java

Jika Anda menjalani langkah-langkah dengan benar, Anda dapat menemukan file
LatMath.class di dalam directory yang sama. 
Kemudian luncurkan dengan java
$ java LatMath
x               = -37.33
Math.abs(x)     = 37.33

x               = 2.356194490192345
Math.tan(x)     = -1.0000000000000002

x               = 21.0
y               = -37.0
Math.max(x,y)   = 21.0

x               = 2.0
y               = 3.0
Math.pow(x,y)   = 8.0

Math.random()     :  0.04970817076751444  0.40194521371113345  0.003979911650069612

x               = 225.0
Math.sqrt(x)    = 15.0

x               = 135.0
Math.toRadians()= 2.356194490192345



Komponen Swing

Seperti pada package AWT, package dari Swing menyediakan banyak class untuk membuat aplikasi GUI. Package tersebut dapat ditemukan di javax.swing. Perbedaan utama antara keduanya adalah komponen Swing ditulis menyeluruh menggunakan Java. Kesimpulannya, program GUI ditulis menggunakan banyak class dari package Swing yang mempunyai tampilan look and feel yang sama meski dijalankan pada paltform yang berbeda. Lebih dari itu, Swing menyediakan komponen yang lebih menarik seperti color chooser dan option pane.

Nama dari komponen GUI milik Swing hampir sama persis dengan komponen GUI milik AWT.
Perbedaan jelas terdapat pada penamaan komponen. Pada dasarnya, nama komponen Swing
sama dengan nama komponen AWT tetapi dengan tambahan huruf J pada prefixnya. Sebagai
contoh, satu komponen dalam AWT adalah button class. Sedangkan pada Swing, nama
komponen tersebut menjadi Jbutton class. Berikut adalah daftar dari komponen Swing.

Untuk daftar yang lengkap dari komponen Swing, Anda dapat melihatnya di dokumentasi API.

  • Setting Up Top-Level Containers
Seperti disebutkan diatas, top-level containers seperti Jframe dan Japplet dalam Swing sangat
tidak cocok dengan AWT. Ini adalah syarat menambahkan komponen ke dalam kontainer. Jika
Anda ingin menambahkan langsung sebuah komponen kedalam kontainer sebagai kontainer
AWT, pertama-tama Anda telah mendapatkan content pane dari kontainer. Untuk melakukan
hal tersebut, Anda akan menggunakan method getContentPane dari container.
  • Contoh Jframe
import javax.swing.*;
import java.awt.*;
class SwingDemo {
JFrame frame;
JPanel panel;
JTextField textField;
JButton button;
Container contentPane;
void launchFrame() {
/* inisialisasi */
frame = new JFrame("My First Swing Application");
panel = new JPanel();
textField = new JTextField("Default text");
button = new JButton("Click me!");
contentPane = frame.getContentPane();
/* menambahkan komponen-komponen ke panel– menggunakan
FlowLayout sebagai default */
panel.add(textField);
panel.add(button);
/* menambahkan komponen-komponen contentPane– menggunakan
BorderLayout */
contentPane.add(panel, BorderLayout.CENTER);
frame.pack();
//menyebabkan ukuran frame menjadi dasar pengaturan komponen
frame.setVisible(true);
}
public static void main(String args[]) {
SwingDemo sd = new SwingDemo();
sd.launchFrame();
}
}
Perlu diperhatikan pada package java.awt masih saja diimpor karena layout manager yang
digunakan terdapat pada package tersebut. Juga, memberi judul pada frame dan mengepack
komponen di dalam frame dapat juga dilakukan untuk frame AWT.

Komponen GUI pada AWT

  • Window Classes Fundamental
Dalam mengembangkan aplikasi GUI, komponen GUI seperti tombol atau textfield diletakkan
di dalam kontainer. Berikut ini adalah daftar dari beberapa class penting pada kontainer yang
telah disediakan oleh AWT.
  • Komponen : Abstract Class untuk object yang dapat ditampilkan pada console dan berinteraksi dengang user. Bagian utama dari semua class AWT.
  • Kontainer : Abstract Subclass dari Component Class. Sebuah komponen yang dapat menampung komponen yang lainnya.
  • Panel : Turunan dari Container Class. Sebuah frame atau window tanpa titlebar, menubar tidak termasuk border. Superclass dari applet class.
  • Window : Turunan dari Container class. Top level window, dimana berarti tidak bisa dimasukkan dalam object yang lainnya.Tidak memiliki border dan menubar.
  • Frame : Turunan dari window class. Window dengan judul, menubar, border dan pengatur ukuran di pojok. Memiliki empat constructor , dua diantaranya memiliki penulisan seperti :Frame(), Frame(String title)

Untuk mengatur ukuran window, menggunakan method setSize.
void setSize(int width, int height)
mengubah ukuran komponen ini dengan width dan height sebagai parameter.
void setSize(Dimension d)
mengubah ukuran dengan d.width dan d.height berdasar pada spesifikasi Dimension d.

Default dari window adalah not visible atau tak tampak hingga Anda mengatur visibility menjadi true. Inilah syntax untuk method setVisible.
void setVisible(boolean b)
Dalam mendesain aplikasi GUI, Object Frame selalu digunakan. Dibawah ini adalah contoh bagaimana membuat sebuah aplikasi.
import java.awt.*;
public class SampleFrame extends Frame {
public static void main(String args[]) {
SampleFrame sf = new SampleFrame();
sf.setSize(100, 100); //Coba hilangkan baris ini
sf.setVisible(true); //Coba hilangkan baris ini
}
}
perhatikan bahwa tombol tutup pada frame tidak akan bekerja karena tidak ada mekanisme
event handling yang ditambahkan di dalam aplikasi.

  • Grafik
Beberapa method grafik ditemukan dalam class Graphic. Dibawah ini adalah daftar dari beberapa method.

Hubungan dari class ini adalah class Color, dimana memiliki tiga constructor.


Dibawah ini adalah contoh program yang menggunakan beberapa method di dalam class
Graphic.
import java.awt.*;
public class GraphicPanel extends Panel {
GraphicPanel() {
setBackground(Color.black); //Konstanta dalam class Color
}
public void paint(Graphics g) {
g.setColor(new Color(0,255,0)); //hijau
g.setFont(new Font("Helvetica",Font.PLAIN,16));
g.drawString("Hello GUI World!", 30, 100);
g.setColor(new Color(1.0f,0,0)); //red
g.fillRect(30, 100, 150, 10);
}
public static void main(String args[]) {
Frame f = new Frame("Testing Graphics Panel");
GraphicPanel gp = new GraphicPanel();
f.add(gp);
f.setSize(600, 300);
f.setVisible(true);
}
}
Agar panel dapat terlihat atau visible, dia harus diletakkan didalam window yang dapat terlihat seperti sebuah frame.

  • Komponen AWT
Berikut ini adalah daftar dari kontrol AWT. Kontrol adalah komponen seperti tombol atau textfield yang mengijinkan user untuk berinteraksi dengan aplikasi GUI. Berikut ini semua subclass dari class Components.

Berikut adalah aplikasi membuat sebuah frame dengan kontrol yang telah dimasukkan di dalamnya.
import java.awt.*;
class FrameWControls extends Frame {
public static void main(String args[]) {
FrameWControls fwc = new FrameWControls();
fwc.setLayout(new FlowLayout()); //akan dibahas lebih detail
pada pembahasan berikutnya
fwc.setSize(600, 600);
fwc.add(new Button("Test Me!"));
fwc.add(new Label("Labe"));
fwc.add(new TextField());
CheckboxGroup cbg = new CheckboxGroup();
fwc.add(new Checkbox("chk1", cbg, true));
fwc.add(new Checkbox("chk2", cbg, false));
fwc.add(new Checkbox("chk3", cbg, false));
List list = new List(3, false);
list.add("MTV");
list.add("V");
fwc.add(list);
Choice chooser = new Choice();
chooser.add("Avril");
chooser.add("Monica");
chooser.add("Britney");
fwc.add(chooser);
fwc.add(new Scrollbar());
fwc.setVisible(true);
}
}

Sabtu, 03 Maret 2012

Enkripsi & Dekripsi pada Java

Enkripsi merupakan proses penggunaan algoritma yang kompleks untuk mengkonversi pesan ( plaintext atau cleartext ) ke suatu pesan terenkripsi ( chipertext ).
> Hal ini ditujukan untuk mengamankan suatu informasi dengan membuat informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan khusus .
> Enkripsi dapat digunakan untuk tujuan keamanan , tetapi teknik lain masih diperlukan untuk membuat komunikasi yang aman , terutama untuk memastikan integritas dan autentukasi dari sebuah pesan .
> 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.
> Sebuah program enkripsi, baik itu yang berdiri sendiri (stand-alone) atau sudah terdapat pada aplikasi e-mail client anda, dan memiliki proses yang sama:
Data melewati sebuah formula matematis yang disebut algoritma, 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:
1. Simetris
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.
2. Asimetris (juga disebut sebagai public key).
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. 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.
Contoh sederhana encripsi dan decripsi pada java :
#include <cstdlib>
#include <iostream>
#include <string.h>
#define maks 500

using namespace std;
class Enkripsi{
public:
Enkripsi();
void enkripsi();
void deskripsi();
void output();
private:
char chiper[maks];
int key;
char plain[maks];

};

Enkripsi::Enkripsi(){
cout<<"Masukkan kata : ";
cin.getline(chiper,sizeof(chiper));
cout<<"Masukkan key  : ";
cin>>key;
cout<<endl;
}

void Enkripsi::enkripsi(){
for(int i=0;i<strlen(chiper);i+=1){
cout<<chiper[i]<<"("<<int(chiper[i])<<") ";
chiper[i] = (chiper[i]+key)%128;
}
}

void Enkripsi::deskripsi(){
for(int i=0;i<strlen(chiper);i+=1){
plain[i] = (chiper[i]-key)%128;
chiper[i] = plain[i];
}
}

void Enkripsi::output(){
for(int i=0;i<strlen(chiper);i+=1){
cout<<chiper[i];
}
}

int main(int argc, char *argv[])
{
Enkripsi Deskripsi;
Deskripsi.enkripsi();
cout<<"\n\nSetelah diEnkripsi : ";
Deskripsi.output();
Deskripsi.deskripsi();
cout<<"\n\nKembali diDeskripsi : ";
Deskripsi.output();

cout<<endl<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

Minggu, 19 Februari 2012

Anonymous Inner Class


~  Anonymous inner class adalah suatu inner class yang dideklarasikan tanpa nama kelas.
~  Anonymous inner class pasti adalah salah satu dari 2 hal berikut :
1.      Subclass dari suatu class yang telah dideklarasikan
2.      Kelas implementasi dari suatu interface

~ Suatu anonymous inner class tidak dapat secara bersamaan menjadi subclass dari class yang telah dideklarasikan dan juga sebagai kelas implementasi dari suatu interface.


 
Tujuan utama dari anonymous inner class adalah mengoverride satu atau lebih method dari super classnya atau mengimplement semua method dari suatu in
~ Anonymous inner class tidak dapat mengimplement lebih dari sebuah interfaceterface.
Anonymous inner class selalu dibuat sebagai bagian dari suatu statement.
Contoh Anonymous inner class sebagai subclass :
 
class A {
    int i = 10;
    void lakukanSesuatu() {
        i--;
        System.out.println("i = " + i);
    }
}

public class BelajarAnonymous1 {    //1
    public static void main(String[] args) {    //2
        A a = new A() {   //3
            void lakukanSesuatu() { //4
                i++;
                System.out.println("i = " + i);
            }   //4
        };  //3
       
        a.lakukanSesuatu();
    }   //2
}   //1