Subscribe:

Main Menu

Jumat, April 11, 2008

Buat Picture Box di java :D

menampilkan gambar di java bisa langsung di panel atau desktope pane nya langsung
dengan cara getGraphics nya terus drawImage atau drawLine...
sesuai keinginan anda.. mau make yang mana...

tapi kelemahannya saat kita sudah mengesetnya.. tau menampilkan gambarnya ternyata gambar itu tidak permanent nempel di panel tersebut, dalam arti lain gambar tadi itu hilang saat kita membuka jendela atau window yang lain, saat gambar kita di tumpuki window atau form lain gambarnya hilang :(

nah saya jadi pengen gimana ya agar gambar nya tidak bisa mlenca mlence gitu :(... akhirnya aku dapat caranya..

yaitu dengan menurunkan component panel atau desktopepane atau apa saja yang bisa di setgraphicsnya di java. terus saya mengoverwrite method paintComponent(Graphics g). nah di dalamnya kita bisa menulis dech itu gambar2 yang kita inginkan. dalam arti lain sekarang kita udah punya semacam component PictureBox di java :D. nah tinggal kemahiran kita membuat component kita itu lebih enak dan mudah saat mengeset imagenya :D

image kita ini juga bisa di buat STRETCH, CENTER, SCALE dll lho.. nah itu tergantung coding nya :D
ini sedikit coding yang saya buat :

public void paintComponent(Graphics g) {
super.paintComponent(g);
if (image!=null){
if(layout.equalsIgnoreCase(STRETCH))
g.drawImage( image, 0, 0, getWidth(),getHeight(), null );
else if(layout.equalsIgnoreCase(DEFAULT))
g.drawImage( image, 0, 0, null );
else if(layout.equalsIgnoreCase(CENTER))
g.drawImage(image, (getWidth()-image.getWidth(null))/2, (getHeight()-image.getHeight(null))/2,image.getWidth(null),image.getHeight(null), null );
else if(layout.equalsIgnoreCase(SCALE)){
int imageWidth=image.getWidth(null);
int imageHeight=image.getHeight(null);
int x1=0;
int x2=0;
int y1=0;
int y2=0;
if(imageWidth>imageHeight){
x1=0;
x2=getWidth();
y2=(int)(((float)x2/(float)imageWidth)*imageHeight);
y1=(int)(getHeight()-y2)/2;
}else{
y1=0;
y2=getHeight();
x2=(int)(((float)y2/(float)imageHeight)*imageWidth);
x1=(int)(getWidth()-x2)/2;
}
g.drawImage(image, x1, y1,x2,y2, null );
}


}
}

semoga sukses :D

0 komentar: