Jumat, 28 Februari 2014

Menghentikan Thread Pada Java

Salah satu perubahan pada Java 2 untuk mengurangi kemungkinan terjadinya deadlock adalah dengan dideprekasi (artinya pengembangannya dihentikan, dan user disarankan untuk menghindari penggunaannya) metode stop(), suspend(), dan resume() pada kelas Thread. Alasan mengapa metode stop() dideprekasi adalah karena metode ini tidak melepas kunci yang sudah dimilikinya, dan jika objek tersebut berada dalam kondisi "cacat" seperti ini, thread lain bisa melihat dan mengubah objek cacat ini. Hasilnya akan muncul masalah yang tersembunyi yang akan sangat sulit dideteksi. Java menyediakan cara lain untuk menghentikan thread, yaitu dengan mengeset suatu variabel untuk memberi tahu thread tersebut agar menghentikan dirinya sendiri yaitu dengan keluar dari metode run()-nya. Variabel ini akan dicek pada metode run() yang jika bernilai true, maka metode run() akan berhenti. Berikut ini adalah contohnya :

package com.lyracc.hentikanthread;
 
import java.util.*;
 
class Berhenti extends Thread {
    // Harus bertipe volatile:
    private volatile boolean stop = false;
    private int hitung = 0;
 
    public void run() {
        // Jika stop masih bernilai false teruskan cetak angka
        // Jika stop bernilai true, blok ini tidak lagi dijalankan
        while (!stop && hitung < 10000) {
            System.out.println(hitung++);
        }
        // Jika stop berubah menjadi true
        if (stop)
            System.out.println("Permintaan stop dideteksi");
    }
 
    public void requestStop() {
        stop = true;
    }
}
 
public class HentikanThread {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
 
        final Berhenti threadBaru = new Berhenti();
        threadBaru.start();
        new Timer(true).schedule(new TimerTask() {
            public void run() {
                System.out.println("Permintaan berhenti");
                threadBaru.requestStop();
            }
        }, 500); // run() setelah 500 mili detik
    }
}

Variabel stop harus bertipe volatile sehingga metode run() pasti bisa melihat variabel ini (jika tidak, maka nilainya bisa saja di-cache). Tugas thread ini adalah mencetak 10000 angka, yang akan berhenti ketika hitung >= 10000 atau objek lain meminta berhenti dengan memanggil requestStop(). Perhatikan bahwa requestStop() tidak synchronized karena stop bertipe boolean dan volatile (mengubah boolean menjadi [code]true adalah operasi atomis yang tidak bisa dihentikan di tengah jalan, karena dilakukan dalam 1 clock). Pada main(), objek Berhenti dimulai. Pada saat yang sama, Timer dimulai untuk memanggil requestStop() setelah setengah detik (500 mili detik). Konstruktor Timer diisi true untuk memastikan bahwa program berhenti saat itu juga.
Menginterupsi Thread yang Diblok
Kadang-kadang, ketika thread dalam keadaan diblok (misalnya ketika sedang menunggu input), thread tersebut tidak bisa membaca variabel seperti kita lakukan di atas. Di sini, kita bisa menggunakan metode interrupt() pada kelas Thread untuk mengeluarkannya dari kondisi diblok. Misalnya,
package com.lyracc.interupsi;
 
import java.util.*;
 
class ThreadDiblok extends Thread {
    public ThreadDiblok() {
        System.out.println("Memulai blokade");
        start();
    }
 
    public void run() {
        try {
            synchronized (this) {
                wait(); // Memblok selamanya
            }
        } catch (InterruptedException e) {
            System.out.println("Diinterupsi");
        }
        System.out.println("Keluar dari run()");
    }
}
 
public class Interupsi {
 
    static ThreadDiblok threadDiBlok = new ThreadDiblok();
 
    /**
     * @param args
     */
    public static void main(String[] args) {
 
        new Timer(true).schedule(new TimerTask() {
            public void run() {
                System.out.println("Bersiap-siap untuk interupsi");
                threadDiBlok.interrupt();
                threadDiBlok = null; // buat null untuk diambil oleh pemulung memori
            }
        }, 2000); // run() setelah 2 detik
    }
}

Panggilan wait() di dalam ThreadDiBlok.run() akan memblok thread selamanya. 
Ketika Timer selesai,  objek akan melakukan interupsi dengan memanggil interrupt().
Kemudian objek threadDiBlok diset ke null sehingga  bisa diambil oleh 
pemulung memori untuk dibersihkan. 


 
 
sumber : http://java.lyracc.com/belajar/java-untuk-pemula/menghentikan-thread
Continue Reading...

Rekursif Pada Java

Rekursif adalah teknik pemecahan masalah yang powerful dan dapat digunakan ketika inti dari masalah terjadi berulang kali. Tentu saja, tipe dari masalah ini dapat dipecahkan mengunakan perkataan berulang-ulang (yaitu, menggunakan konstruksi looping seperti for, while dan do-while).

Sesungguhnya, iterasi atau perkataan berulang-ulang merupakan peralatan yang lebih efisien jika dibandingkan dengan rekursif tetapi rekursif menyediakan solusi yang lebih baik untuk suatu masalah. Pada rekursif, method dapat memanggil dirinya sendiri. Data yang berada dalam method tersebut seperti argument disimpan sementara ke dalam stack sampai method pemanggilnya diselesaikan.

Rekursif Vs. Iterasi
Untuk pengertian yang lebih baik dari rekursif, mari kita lihat pada bagaimana macammacam dari teknik iterasi. Dalam teknik-teknik tersebut juga dapat kita lihat penyelesaian sebuah loop yang lebih baik menggunakan rekursif daripada iterasi. Penyelesaian masalah dengan perulangan menggunakan iterasi secara tegas juga digunakan pada struktur kontrol pengulangan. Sementara itu, untuk rekursif, task diulangi dengan memanggil sebuah method perulangan. Maksud dari hal tersebut adalah untuk menggambarkan sebuah masalah ke dalam lingkup yang lebih kecil dari perulangan itu sendiri. Pertimbangkan penghitungan faktorial dalam penentuan bilangan bulat. Definisi rekursif dari hal tersebut dapat diuraikan sebagai berikut: factorial(n) = factorial(n-1) * n; factorial(1) = 1. Sebagai contohnya, nilai faktorial dari 2 sama dengan fatorial (1)*2, dimana hasilnya adalah 2. Faktorial dari 3 adalah 6, dimana sama dengan faktorial dari (2)*3.




Dengan iterasi, proses diakhiri ketika kondisi loop gagal atau salah. Dalam kasus dari penggunaan rekursif, proses yang berakhir dengan kondisi tertentu disebut permasalahan dasar yang telah tercukupi oleh suatu pembatasan kondisi. Permasalahan yang mendasar merupakan kejadian yang paling kecil dari sebuah masalah. Sebagai contoh, dapat dilihat pada kondisi rekursif pada faktorial, kasus yang mudah adalah ketika masukannya adalah 1. 1 dalam kasus ini merupakan dasar dari masalah. Penggunaan dari iterasi dan rekursif dapat bersama-sama memandu loops jika hal ini tidak digunakan dengan benar.

Keuntungan iterasi dibandingkan rekursif adalah performance yang lebih baik. Hal tersebut lebih cepat untuk rekursif sejak terbentuknya sebuah parameter pada sebuah method yang menyebabkan adanya suatu CPU time. Bagaimanapun juga, rekursif mendorong pelatihan perancangan software yang lebih baik, sebab teknik ini biasanya dihasilkan dalam kode yang singkat yang lebih mudah untuk dimengerti dan juga mempromosikan reusability pada suatu solusi yang sebelumnya telah diterapkan. Memilih antara iterasi dan rekursif merupakan permasalahan dari menjaga keseimbangan antara baiknya sebuah performance dan baiknya perancangan software.

Dibawah ini source yang akan saya gunakan pada program yang akan saya buat


/**
 * Simple Java program to find factorial of a number using recursion and iteration.
 * Iteration will use for loop while recursion will call method itself
 */
public class FactorialInJava{

    public static void main(String args[]) {
    
      //finding factorial of a number in Java using recursion - Example
      System.out.println("factorial of 5 using recursion in Java is: " + factorial(5));
    
      //finding factorial of a number in Java using Iteration - Example
       System.out.println("factorial of 6 using iteration in Java is: " + fact(6));
    }

    public static int factorial(int number){     
        //base case
        if(number == 0){
            return 1;
        }
        return number*factorial(number -1); //is this tail-recursion?
    }

    public static int fact(int number){
        int result = 1;
        while(number != 0){
            result = result*number;
            number--;
        }
    
        return result;
    }
}


setelah source Sudah Di masukkan kita klik saja Langsung RUN nya
dan setelah rundi klik maka akan muncul kotak dialog seperti berikut


klik saja OK untuk melanjutkan,setelah klik ok maka akan muncul Hasil akhir output dari program yang sudah kita buat,seperti gambar di bawah ini.



Source : JENI (Java Education Network Indonesia)
Continue Reading...

Tour dari Package java

Java datang dengan beberapa class built-in yang bermanfaat. Mari kita membahas classclass tersebut. Pada akhir pembahasan, diharapkan pembaca dapat : 1. Menggunakan class-class Java yang telah ada - Math - String - StringBuffer - Wrapper - Process - System
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. Dibawah ini beberapa method-method umum yang sering digunakan.

dengan source di bawah ini saya akan mencoba sebuah percobaan

class MathDemo { public static void main(String args[]) { System.out.println("absolute value of -5: " + Math.abs(-5)); System.out.println("absolute value of 5: " + Math.abs(-5)); System.out.println("random number(max value is 10): " + Math.random()*10); System.out.println("max of 3.5 and 1.2: " + Math.max(3.5, 1.2)); System.out.println("min of 3.5 and 1.2: " + Math.min(3.5, 1.2)); System.out.println("ceiling of 3.5: " + Math.ceil(3.5)); System.out.println("floor of 3.5: " + Math.floor(3.5)); System.out.println("e raised to 1: " + Math.exp(1)); System.out.println("log 10: " + Math.log(10)); System.out.println("10 raised to 3: " + Math.pow(10,3)); System.out.println("rounded off value of pi: " + Math.round(Math.PI)); System.out.println("square root of 5 = " + Math.sqrt(5)); System.out.println("10 radian = " + Math.toDegrees(10) + " degrees"); System.out.println("sin(90): " + Math.sin(Math.toRadians(90))); } }

  lalu kita run saja programnya,setelah prgram di klik maka akan muncul kotak dialog seperti gambar di bawah ini
klik saja ok untuk melanjutkan,dan setelah mengklik OK selanjutnya hasil dari outputnya adalah sebagai berikut


Source : JENI (Java Education Network Indonesia)


Continue Reading...

Cara Mengeksekusi File Java pada Terminal Ubuntu

1.  Buat folder java di tempat yang anda inginkan. dalam hal ini, saya membuat folder java di folder user >> home/dian/Java

2. Buat program java yang ingin anda compile dan eksekusi. pembuatan program bisa dilakukan menggunakan gedit atau nano. yang terpenting, saat menyimpan gunakan ekstensi .java untuk file java anda.

Jika anda belum menyiapkan programnya, anda bisa menggunakan program sederhana dibawah ini , nama.java


Contoh program java sederhana

setelah selesai, simpan file nama.java di folder yang sudah anda siapkan tadi.

3. masuk ke terminal (Ctrl + Alt + t) , login sebagai superuser dengan cara mengetikkan command berikut :

sudo su

kenapa memerlukan root ? hal ini dimaksudkan untuk berjaga-jaga dalam hal permissions. jika permissions folder java tadi dibatasi tapi anda tidak login root, proses compile bisa mengalami error meskipun file java anda sudah benar.

4. Masuk ke folder tempat anda menyimpan file nama.java tadi via terminal.

5. Masukkan command ls untuk mengecek apakah file nama.java tadi sudah berada dalam folder.

6. jika iya , langsung compile file nama.java dengan command berikut :

javac nama.java

7. Jika sukses, maka akan kembali ke folder , tapi jika error akan ada notifikasi eror beserta lokasi yang error

8. jika compile sudah berhasil, eksekusi program nama.java tadi dengan cara mengeksekusi command berikut :

java nama

9. Jika berhasil , maka akan muncul jendela baru yang meminta anda untuk memasukkan nama. keseluruhan tampilannya seperti ini :
Compile dan Eksekusi Java di Terminal



Source : www.teknologiterbaru.net/893/cara-mengcompile-dan-eksekusi-program-java-di-terminal-linux/
Continue Reading...

Set Text Pada Label di Java

Suatu label bisa diisi teks atau gambar, tapi tidak keduanya secara bersamaan. Berikut ini adalah beberapa metode yang digunakan untuk mengeset dan mengambil teks dan gambar pada label.


 Berikut ini adalah contoh mengeset teks dan gambar pada suatu label



Label label1 = new Label(shell, SWT.LEFT);
label1.setText("Selamat Datang!");
 
SWT.BORDER SWT.BORDER adalah bit gaya yang tersedia pada Control. Semua kontrol, termasuk Label bisa menggunakan bit gaya ini. Bit gaya ini memberikan garis tepi di sekitar kontrol. Misalnya, dari contoh pada bagian sebelumnya, kita tambahkan SWT.BORDER sebagai bit gaya pada label1, maka keluarannya ada seperti gambar berikut ini.


...
        // Inisialisasi label
        label1 = new Label(shell, SWT.LEFT | SWT.BORDER);
        label1.setText("Selamat Datang!");
        label1.setBounds(10, 10, 150, 25); // set lokasi & ukuran kontrol agar bisa ditampilkan
...
 
Kerapatan Teks Kita juga bisa mengatur kerapatan (alignment) suatu teks atau gambar. Selain menggunakan bit gaya SWT.LEFT, SWT.RIGHT, atau SWT.CENTER pada konstruktor. Atau kita juga bisa menggunakan metode instansi pada kelas tombol berikut :





 Misalnya,



Label labelTeks = new Label(shell, SWT.NONE); // Tanpa bit gaya
labelTeks.setText("Tombolku");
labelTeks.setAlignment(SWT.LEFT);
 
Ilustrasi berikut menunjukkan label dengan tiga kerapatan berbeda, menggunakan bit gaya SWT.LEFT, SWT.RIGHT, dan SWT.CENTER.

Memangkas Teks Jika kita ingin agar label yang kita tampilkan hanya terbatas pada ukuran tertentu saja, bit gaya SWT.WRAP bisa digunakan untuk ini. SWT.WRAP memberitahukan kontrol untuk memotong teks sehingga tidak ada teks yang terpotong dengan paksa. Berikut ini adalah contoh perbedaan label yang menggunakan SWT.WRAP (label atas) dan yang tidak (label bawah).

Kode lengkapnya adalah sebagai berikut :

import org.eclipse.swt.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;
 
public class HelloSWT3 {
 
    // Variabel-variabel widget kita deklarasikan sebagai
    // variabel privat
    private Display display;
    private Shell shell;
    private Label label1;
    private Label label2;
 
    // Konstruktor kelas ini, untuk menginisialisasi semua widget
    HelloSWT3() {
        // Membuat display dan shell baru
        display = new Display();
        shell = new Shell(display);
        shell.setSize(200, 200);
        shell.setText("Hello SWT");
 
        // Inisialisasi label
        label1 = new Label(shell, SWT.LEFT | SWT.BORDER | SWT.WRAP);
        label1.setText("Selamat Datang di sini");
        label1.setLocation(10, 10); // set lokasi kontrol
 
        // Hitung ukuran kontrol yang dibutuhkan
        Point ukuran = label1.computeSize(SWT.DEFAULT, SWT.DEFAULT);
 
        // Set lebar kontrol menjadi setengahnya
        ukuran.x = ukuran.x/2;
        label1.setSize(ukuran);
 
        // Inisialisasi label
        label2 = new Label(shell, SWT.LEFT | SWT.BORDER);
        label2.setText("Selamat Datang di sini");
        label2.setLocation(10, 40); // set lokasi kontrol
 
        // Hitung ukuran kontrol yang dibutuhkan
        ukuran = label2.computeSize(SWT.DEFAULT, SWT.DEFAULT);
 
        // Set lebar kontrol menjadi setengahnya
        ukuran.x = ukuran.x/2;
        label2.setSize(ukuran);
    }
 
    // Perintah "standar" SWT, harus ada pada setiap aplikasi SWT
    public void run() {
        shell.open();
        while (!shell.isDisposed())
            if (!display.readAndDispatch())
                display.sleep();
        display.dispose();
    }
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // Instansiasi kelas ini, kemudian jalankan run
        HelloSWT3 hello = new HelloSWT3();
        hello.run();
    }
}


Source : http://java.lyracc.com/belajar/java-untuk-pemula/mengeset-teks-pada-label 
Continue Reading...

Konversi String ke tipe Numerik Dengan Java

pada artikel ini saya akan membuat sebuah artikel tentang bagaimana cara mengkonversi tipe string ke bentuk numerik pada java

Metoda showInputDialog() dari kelas JOptionPane mengembalikan nilai yang telah diinput oleh pengguna aplikasi dalam bentuk tipe String. Jika Anda memasukkan nilai numerik integer 243 ke kotak dialok input, metoda showInputDialog() mengembalikan nilai tersebut dalam bentuk string numerik integer “243”. String numerik ini tidak dapat digunakan dalam operasi aritmatika. Agar operasi aritmatika dapat dieksekusi, nilai string numerik terlebih dahulu harus dirubah (dikonversi) ke nilai numerik.
Untuk mengkonversi string numerik integer ke tipe-tipe numerik integer, dapat digunakan metoda parseInt dari kelas Integer. Berikut ini adalah contoh pernyataan untuk mengkonversi string numerik integer ke tipe int.> int varInteger = Integer.parseInt(strVarInteger);
varInteger adalah variabel tipe int. Variabel ini digunakan untuk menerima nilai hasil konversi dari string numerik integer ke numerik integer. Integer adalah salah satu kelas Java. Kelas Integer mempunyai metoda parseInt yang digunakan untuk mengkonversi nilai string numerik integer ke nilai numerik integer. strVarInteger adalah variabel yang berisi nilai string numerik integer seperti “243”. Anda dapat merubah string numerik double ke numerik double dengan sintak penulisan seperti berikut ini:
double varDouble = Double.parseDouble(strVarDouble);
strVarDouble adalah variabel yang berisi nilai string numerik double seperti “243.45”. Sebagaimana data tipe int dan double, tipe data numerik lain seperti byte, short, long dan float masing-masing mempunyai kelas dan metoda yang bersesuaian untuk mengkonversi nilai string numerik ke nilai numerik. Berikut ini adalah beberapa pernyataan yang digunakan untuk mengkonversi ke tipe-tipe numerik yang lain:
// Mengkonversi ke tipe byte byte varByte = Byte.parseByte(strVarByte); // Mengkonversi ke tipe short short varShort = Short.parseShort(strVarShort); // Mengkonversi ke tipe long long varlong = Long.parseLong(strVarLong); // Mengkonversi ke tipe float float varFloat = Float.parseFloat(strVarFloat);
Kelas-kelas Java seperti Byte, Short, Integer, Long, Float dan Double juga sering disebut dengan numeric wrapper class. Numerik wrapper class tidak hanya berfungsi untuk mengkonversi nilai string numerik ke nilai numerik, lebih dari itu, numeric wrapper class antara lain juga dapat digunakan untuk merubah tipe data numerik primitif ke bentuk obyek numerik atau sebaliknya. Numerik wrapper class terletak di paket java.lang. Sebagaimana yang sudah dijelaskan sebelumnya, semua kelas Java yang terletak di paket java.lang secara otomatis sudah tersedia untuk digunakan di dalam program dan tidak perlu diimpor lagi menggunakan kata import.
Berikut ini adalah contoh program menghitung keliling lingkaran. Nilai jari-jari lingkaran yang digunakan di dalam program, diinput menggunakan kotak dialok input yang kemudian dikonversi ke tipe int.

saya akan mencoba dengan source seoerti di bawah ini

// Nama file : KelilingLingkaran
// Menampilkan nilai keliling lingkaran di kotak dialok pesan
// dengan nilai variabel jari2 diinput melalui kotak dialok input
// Mengimpor kelas JOptionPane
import javax.swing.JOptionPane;
public class KelilingLingkaran {
   public static void main(String[] args) {
      // Deklarasi konstanta
      final double PI = 3.14159;
      // Deklarasi variabel jari-jari dan luas lingkaran
      int jari2;
      double keliling;
      String sJari2;
      // Nilai variabel jari2 diinput melalui kotak dialok input
      sJari2 = JOptionPane.showInputDialog(null,
         "Masukkan jari-jari lingkaran\ndengan tipe data integer",
         "Input Data Jari-jari", JOptionPane.QUESTION_MESSAGE);
      // Konversi tipe data String ke int
      jari2 = Integer.parseInt(sJari2);
      // Menghitung luas lingkaran
      keliling = 2 * PI * jari2;
      // Menampilkan hasil di kotak dialok pesan
      JOptionPane.showMessageDialog(null, "Jari-jari lingkaran = " +
         jari2 + "\nKeliling lingkaran = " + keliling, "Keliling Lingkaran",
         JOptionPane.INFORMATION_MESSAGE);
       
      // Mengakhiri program yang menampilkan GUI
      System.exit(0);
   }
}
 
 
 setelh codes sudah di masukkan klik saja run,dan setelah run di klik maka akan muncul kotak dialog sperti gambar di bawah ini

klik saja ok untuk melanjutkan,setelah ok di klik selanjutnya akan muncul kotak dialog yang akan meminta sebuah inputan untuk memasukkan jari jari seperti gambar di bawah ini.
misalkan kita masukkan saja "20" ,selanjutnya klik OK
maka hasil akhir dari output yang kita buat adalah sebagai berikut

Source :
http://www.termasmedia.com/2012-05-29-02-56-17/java/20-konversi-data-dari-string-ke-tipe-tipe-numerik.html
Continue Reading...

TreeSet Pada java

Pada artikel ini saya akan membuat sebuah artikel tentang Treeset pada java
TreeSet merupakan sebuah  implementasi dari  interface Set yang menggunakan tree.
Class  ini memastikan bahwa yang disortir  akan diurutkan secara ascending. 



 
dibawah ini saya akan berikan contoh dari program treeset yang akan saya coba.
dan setelah di klik run maka akan muncul kotak dialog berupa konfirmasi untuk run sperti di bawah ini
Klik saja OK untuk Melanjutkan
setelah di klik ok maka hasil outputnya adalah sebagai berikut
 Source : JENI (Java Education Network Indonesia)
Continue Reading...

Menampilkan Gambar

Seperti halnya warna dan huruf pada SWT, ada dua kelas yang digunakan untuk menampilkan gambar pada SWT : ImageData untuk melambangkan gambar dalam format yang tidak tergantung pada suatu perangkat, dan Image yang merupakan representasi gambar pada suatu perangkat. Suatu kontrol memiliki beberapa metode untuk menampilkan gambar di latar depan ataupun latar belakangnya. Tentunya, ini tergantung dari kontrol tersebut bagaimana hal ini akan diimplementasikan. Pada Label misalnya, latar belakang bisa diset berbentuk gambar menggantikan warna latar belakangnya. Atau bisa juga label diisi dengan gambar sebagai pengganti teksnya. Berikut ini adalah beberapa metode untuk mengeset suatu gambar pada kontrol


Seperti warna dan huruf suatu kontrol yang memiliki pasangan Color dan RGB atau Font dan FontData, gambar juga memiliki pasangan Image dan ImageData. ImageData bisa juga dipergunakan untuk melakukan pengolahan gambar sederhana, misalnya mengganti kontras melakukan clipping, dan sebagainya, akan tetapi kita tidak akan membahas terlalu detail tentang gambar pada bagian ini. Kita akan bahas lebih lanjut bagaimana untuk mengeset gambar latar depan dan latar belakang suatu kontrol.

Kelas Image
Kelas Image bisa diinstansiasi ke dalam bentuk objek dengan menggunakan beberapa konstruktor. Salah satunya yang paling mudah digunakan adalah bentuk konstruktor seperti Image(Device device, String namaFileGambar), di mana device adalah perangkat yang akan digunakan untuk menampilkan gambar, bisa display atau printer, dan namaFileGambar adalah path di mana file gambar yang akan kita tampilkan berada.

Misalnya, pada perintah berikut


Image gambar = new Image(display, "contoh.png");
 
digunakan untuk mengimport gambar ke dalam objek bernama gambar. Objek ini bisa kita gunakan untuk mengeset gambar latar belakang atau pengganti teks pada suatu kontrol. Akan tetapi ingat objek ini juga harus dihapus dari sistem operasi dengan memanggil gambar.dispose() secara eksplisit setelah tidak lagi digunakan. Jika ukuran suatu kontrol lebih besar dari pada gambar yang akan kita tampilkan di latar belakangnya, maka gambar tersebut akan diulang-ulang untuk memenuhi tampilan suatu kontrol. Kita bisa menggunakan metode instansi getBounds() dari suatu Image untuk mendapatkan ukuran gambar yang diperlukan. Hasilnya bisa kita gunakan untuk mengeset kontrol yang akan kita gunakan untuk menampilkan gambar.
Contoh berikut menampilkan dua jenis label, di mana yang pertama menampilkan gambar sebagai warna latar belakangnya, dan yang satu menampilkan gambar sebagai pengganti teks. Program lengkapnya dapat diunduh di sini.
 
 
 
Kode Program :
package com.lyracc.gambarlabel;
 
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.*;
 
public class GambarLabel {
 
    // Variabel-variabel widget kita deklarasikan sebagai
    // variabel privat
    private Display display;
    private Shell shell;
    private Label label1;
    private Label label2;
 
    // Konstruktor kelas ini, untuk menginisialisasi semua widget
    GambarLabel() {
        // Membuat display dan shell baru
        display = new Display();
        shell = new Shell(display);
        shell.setSize(250, 200);
        shell.setText("Hello SWT");
 
        // Inisialisasi label
        label1 = new Label(shell, SWT.CENTER | SWT.BORDER);
        label1.setText("Hello dari SWT");
        label1.setBounds(10, 10, 200, 50);
        label1.setForeground(display.getSystemColor(SWT.COLOR_RED));
 
        // Inisialisasi gambar
        Image gambar = new Image(display,"contoh.png");
 
        label1.setBackgroundImage(gambar); // Set gambar sebagai latar belakang
 
        label2 = new Label(shell, SWT.CENTER | SWT.BORDER);
        label2.setBounds(10, 70, 200, 50);
        label2.setImage(gambar); // Set gambar
 
        gambar.dispose(); // Jangan lupa menghapus gambar dari memori
 
    }
 
    // Perintah "standar" SWT, harus ada pada setiap aplikasi SWT
    public void run() {
        shell.open();
        while (!shell.isDisposed())
            if (!display.readAndDispatch())
                display.sleep();
        display.dispose();
    }
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // Instansiasi kelas ini, kemudian jalankan run
        GambarLabel jendela = new GambarLabel();
        jendela.run();
    }
}
 

 
 
 
Source : http://java.lyracc.com/belajar/java-untuk-pemula/menampilkan-gambar 
Continue Reading...

Fungsi dan Prosedur Pada Pemrograman Java

Seperti halnya bahasa pemograman yang lain java juga memiliki fungsi dan prosedur yang berguna untuk memudahkan dan mengoptimalkan program.
Prosedur
Prosedur adalah kumpulan ekspresi-ekspresi algoritma yang berguna untuk menjalankan proses tertentu. Prosedur sudah banyak dikenal mulai dari bahasa mesin hingga bahasa level tinggi (Query). Dalam bahasa Java prosedur biasanya diawali dengan kata “void”. Dan kebanyakan aplikasi berjalan melalui prosedur.

Fungsi

Fungsi dan prosedur memiliki kesamaan dalam bentuknya hanya saja fungsi memiliki nilai yang bisa dihasilkan kembali (Dikembalikan). Fungsi dibuat biasanya untuk menyederhanakan sebuah operasi. Ketika dua buah prosedur membutuhkan sebuah operasi yang sama maka operasi tersebut dapat ditulis kedalam fungsi sehingga bisa menghemat waktu penulisan tanpa harus menulis dua kali. Dalam bahasa Java fungsi biasanya diawali dengan tipe data (int, char, bool). Dan diakhir statementnya terdapat kata “return”. Nilai yang direturn harus nilai yang sama seperti yang dideklarasikan di nama fungsi. perhatikan contoh dari prosedur dan fungsi dibawah ini :

 public class FunctionProcedure { public static void main(String[] args) {
int T, n;


n = Nilai(4, 4); //Fungsi Nilai dipanggil
T = n * 100;

System.out.println(T);
}

public static int Nilai(int a, int b) {
int n;

b = b * 2;
n = a + b;
return n;
}
}

Program diatas menggunakan fungsi nilai yang menghitung nilai a dan b setelah dihitung nilai hasil akan digunakan oleh prosedur main dan prosedur main akan menampilkan hasilnya.



Continue Reading...

FontDialog

Kotak dialog FontDialog digunakan untuk memilih salah satu huruf dari huruf-huruf yang tersedia pada suatu platform. Suatu huruf yang tersedia pada platform yang satu belum tentu tersedia pada platform yang lain. Sama seperti ColorDialog, kotak dialog ini tidak mempunyai bit gaya yang bisa diset. Untuk menggunakannya mirip dengan kotak-kotak dialog yang lain. Beberapa platform memungkinkan kita untuk mengeset jenis huruf dan warnanya sekaligus. SWT juga menyediakan metode untuk mengambil warna dan jenis huruf yang dipilih user sekaligus. Kotak dialog FontDialog mengembalikan array objek bertipe FontData. Berikut ini adalah beberapa metode yang tersedia pada FontDialog



Berikut ini adalah contoh menggunakan FontDialog. Shell yang berisi "contoh teks" akan berubah warna dan penampilannya apabila kita mengubah jenis hurufnya dengan menekan tombol "Ubah huruf".  
Listing program lengkapnya adalah sebagai berikut, atau bisa juga diunduh di sini untuk diimport ke dalam Eclipse. 
Kode Program : 


package com.lyracc.kotakdialogfont;
 
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
 
public class KotakDialogFont {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);
 
        // Mengeset layout shell
        shell.setLayout(new RowLayout());
 
        // Mengubah ukuran jendela dan mengeset judul jendela
        shell.setText("Demo kotak dialog huruf");
 
        // Membuat teks baru
        final Text teks = new Text(shell,SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
        teks.setLayoutData(new RowData(100, 200));
        teks.setText("contoh teks");
 
        // Membuat tombol baru
        Button tombol = new Button(shell, SWT.PUSH);
        tombol.setText("Ubah huruf");
 
        // Membuat kotak dialog font baru
        final FontDialog dialog = new FontDialog(shell);
        dialog.setText("Pilih huruf");
 
        // Membuat event listener menggunakan listener bertipe
        SelectionAdapter listener = new SelectionAdapter() {
            @Override
            // Ketika tombol ditekan
            public void widgetSelected(SelectionEvent e) {
                // Jika kotak dialog mengembalikan null, artinya
                // tidak ada huruf yang dipilih
                if (dialog.open() == null) return;
 
                // Referensi ke display
                Display displayUtama = e.display;
 
                // Mengambil huruf yang dipilih
                FontData[] list = dialog.getFontList();
                // Ubah dari FontData ke Font
                Font huruf = new Font(displayUtama, list);
 
                // Set huruf pada teks
                teks.setFont(huruf);
                // Jangan lupa hapus dari memori untuk mencegah kebocoran memori
                huruf.dispose();
 
                // Ambil warna dari dialog. Jika tidak null, ubah warna teks
                RGB rgb = dialog.getRGB();
                if (rgb != null) {
                    Color warna = new Color(displayUtama, rgb);
                    teks.setForeground(warna);
                    warna.dispose();
                }
            }
        };
 
        // Tambah listener pada tombol
        tombol.addSelectionListener(listener);
 
        shell.open();
        while (!shell.isDisposed())
            if (!display.readAndDispatch()) 
                display.sleep();
        display.dispose();        
    }
}
 
Source : http://java.lyracc.com/belajar/java-untuk-pemula/kotak-dialog-fontdialog  
Continue Reading...

Followers

Follow The Author