Skip to main content

Pemograman JAVA (membuat form trasparan)

Kita sering pengen yang aneh-aneh dengan swing yang kita pake terutama form.
bikin form transparan di java mungkin ga' ya? nah ni salah satu pertanyaan yang muncul dari

kepala saya. akhirnya saya pun mulai coba-coba diselah kepenatan pekerjaan di kantor baru.
langsung aja saya akan bahas hasil coba-coba saya.
Pada dasarnya untuk membuat form transparan kita hanya perlu meng-capture screen trus hasilnya tinggal kita jadikan background di from kita dan tentunya harus disesuaikan dengan posisi form di screen.
untuk meng-capture screen kita buat fungsi berikut:

public void updateBackground( ) {
try {
Robot rbt = new Robot( );
Toolkit tk = Toolkit.getDefaultToolkit( );
Dimension dim = tk.getScreenSize( );
background = rbt.createScreenCapture(
new Rectangle(0,0,(int)dim.getWidth( ),
(int)dim.getHeight( )));
} catch (Exception ex) {
System.out.println(ex.toString( ));
ex.printStackTrace( );
}
}

kemudian menjadikan hasil capture sebagai background.
@Override
public void paintComponent(Graphics g) {
Point pos = this.getLocationOnScreen( );
Point offset = new Point(-pos.x,-pos.y);
g.drawImage(background,offset.x,offset.y,null);

}

agar background berubah sesuai screen saat form kita harus tambahkan actionListener.
dan berikan perintah untuk mengubah background saat kita drag, seperti berikut perintahnya.

public void componentResized(ComponentEvent e) {
repaint( );
}
public void componentMoved(ComponentEvent e) {
repaint( );
}
public void componentShown(ComponentEvent e) {
repaint( );
}
public void componentHidden(ComponentEvent e) {

}
public void windowGainedFocus(WindowEvent e) {
refresh( );
}
public void windowLostFocus(WindowEvent e) {
refresh( );
}

public void run() {

try {
while(true) {
Thread.sleep(250);
long now = new Date( ).getTime( );
if(refreshRequested &&
((now - lastupdate) > 1000)) {
if(frame.isVisible( )) {
Point location = frame.getLocation( );
updateBackground( );
frame.setLocation(location);
refresh( );
}
lastupdate = now;
refreshRequested = false;
}
}
} catch (Exception ex) {
System.out.println(ex.toString( ));
ex.printStackTrace( );
}

}
public void refresh( ) {
if(frame.isVisible( )) {
repaint( );
refreshRequested = true;
lastupdate = new Date( ).getTime( );
}
}

berikut source lengkapnya:

/**
* TRASPARAN FORM
* JDKSE :
* Editor : Netbeans 6.5
* OLEH RACHMAD HW email: rac3_hw@yahoo.com blog: rachmad-hw.blogspot.com
*/

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;


/**
*
* @author RACHMAD HW
*/
public class tbForm extends JComponent implements ComponentListener, WindowFocusListener,
Runnable {
private JFrame frame;
private Image background;
private long lastupdate = 0;
public boolean refreshRequested = true;


public tbForm(JFrame frame) {
this.frame = frame;
updateBackground( );
frame.addComponentListener(this);
frame.addWindowFocusListener(this);
new Thread(this).start( );

}
public void updateBackground( ) {
try {
Robot rbt = new Robot( );
Toolkit tk = Toolkit.getDefaultToolkit( );
Dimension dim = tk.getScreenSize( );
background = rbt.createScreenCapture(
new Rectangle(0,0,(int)dim.getWidth( ),
(int)dim.getHeight( )));
} catch (Exception ex) {
System.out.println(ex.toString( ));
ex.printStackTrace( );
}
}
@Override
public void paintComponent(Graphics g) {
Point pos = this.getLocationOnScreen( );
Point offset = new Point(-pos.x,-pos.y);
g.drawImage(background,offset.x,offset.y,null);

}
public static void main(String[] args) {
JFrame frame = new JFrame("Transparan Form...... ^_^");
tbForm bg = new tbForm(frame);
bg.setLayout(new BorderLayout( ));
JButton button = new JButton("ini button");
bg.add("North",button);
JLabel label = new JLabel("ini label");
bg.add("South",label);
frame.getContentPane( ).add("Center",bg);
frame.pack( );
frame.setSize(300,300);
frame.show( );
}

public void componentResized(ComponentEvent e) {
repaint( );
}

public void componentMoved(ComponentEvent e) {
repaint( );
}

public void componentShown(ComponentEvent e) {
repaint( );
}

public void componentHidden(ComponentEvent e) {

}

public void windowGainedFocus(WindowEvent e) {
refresh( );
}

public void windowLostFocus(WindowEvent e) {
refresh( );
}

public void run() {

try {
while(true) {
Thread.sleep(10);
long now = new Date( ).getTime( );
if(refreshRequested &&
((now - lastupdate) > 10)) {
if(frame.isVisible( )) {
Point location = frame.getLocation( );
updateBackground( );
frame.setLocation(location);
refresh( );
}
lastupdate = now;
refreshRequested = false;
}
}
} catch (Exception ex) {
System.out.println(ex.toString( ));
ex.printStackTrace( );
}

}
public void refresh( ) {
if(frame.isVisible( )) {
repaint( );
refreshRequested = true;
lastupdate = new Date( ).getTime( );
}
}

}

/*
* ------------------------------------------------------------
*/

Nah gimana hasilnya?


bikin form transparan di java mungkin ga' ya? jawabnya --> YA MUNGKIN LAH!!!

Comments

Post a Comment

Popular posts from this blog

Membuat SMS Gateway Dengan Java dan Mysql (Making SMS GATEWAY with Java and Mysql) part1

source code bisa didownload disini mirror1 SMS (Short Messaging Services) Data SMS (Short Messaging Services) yang kita kirim atau yang kita terima sebenarnya memiliki format tersendiri untuk dapat diterjemahkan oleh sebuah mobile phone. Format atau mode yang dipakai untuk mengirim dan menerima SMS sebenarnya ada dua yaitu mode text dan mode PDU (Protocol Data Unit). Akan tetapi, sistem mode text tidak didukung oleh semua operator GSM maupun terminal. 1. Text Mode Mode ini adalah cara termudah untuk mengirim pesan. Pada mode teks pesan yang kita kirim tidak dilakukan konversi. Teks yang dikirim tetap dalam bentuk aslinya dengan panjang mencapai 160 (7 bit default alphabet) atau 140 (8 bit) karakter. Sesungguhnya, mode teks adalah hasil encode yang direpresentasikan dalam format PDU. Kelemahannya, kita tidak dapat menyisipkan gambar dan nada dering ke dalam pesan yang akan dikirim serta terbatasnya tipe encoding. 2. PDU (Protocol Data Unit) Mode PDU mode adalah format message dalam hek

Menampilkan Bilangan prima sebanyak N bilangan

Cara simpel aja kok untuk tampilin bilangan prima, nah langsung aja ke codenya: public class BilanganPrima{ /**Main method*/ public static void main(String[] args) { int jumBilPrima; int counter = 1; // Counter penghitung jumlah bilangan Prima int bilangan = 2; // Bilangan yang akan diperiksa, apakah // merupakan bilangan prima atau bukan. // Variabel ini diinisialisasi dengan 2 // karena merupakan bilangan Perima pertama. // Selanjutnya bilangan ini akan diupdate // dengan bilangan berikutnya (3,4,5,..) boolean testPrima = true; // Kondisi yang akan menyatakan // suatu bilangan sebagai Prima // atau bukan. System.out.println("\nPROGRAM MENCARI N BILANGAN PRIMA " + "PERTAMA"); System.out.println("----------------------------

Pemrograman Database Dengan Java dan Ms.Access

Download source code disini mirror1 Download data base disini mirror1 1. Membuat database dengan Access Tahapan dalam membuat database: 1. Buka Ms.Access anda 2. Pilih menu File --> New --> Blank Database 3. Pilih lokasi penyimpanan pada drive C: (anda boleh mengganti tempat penyimpanan sesuai dengan keingginan anda) 4. Buat Folder baru dengan nama Java-access 5. setelah folder tercipta, anda buat folder baru dengan nama database dalam forlder tsb. 6. Ubah file Name dengan data.mdb 2. Mendesign Tabel Untuk membuat table double klik pada Create table in Design View, seperti gambar diatas. a. tabel tbUser - ID (AUTONUMBER, PRIMARYKEY) - uSERNAME (TEXT 20) - PASSWORD (TEXT 20) b. tabel tbBarang - KODE_BRG (TEXT 6, PRIMARYKEY) - NAMA (TEXT 30) - HARGA (NUMBER) - JUMLAH (NUMBER) c. tabel tbTrans - KODE_TRANS (TEXT 10, PRIMARYKEY) - TANGGAL (DATE/TIME (SHORT DATE)) - USER (TEXT 20) d. tabel tbTransDetail - KODE_TRANS (TEXT 10) - KODE_BRG (TEXT 6) - JUMLA