Sunday, November 22, 2009

Vote AOS (Animasi Open Source)

Vote AOS MADIG (Majalah Digital) buatan Pandu Aji Wirawan aka ndundupan anggota JC SMKN 1 Surabaya di acara Komputexpo 2009 pada tanggal 27 November - 1 Desember 2009 di Grand City Convention Center Surabaya agar menjadi juara nasional.

Lomba Majalah Digital yang diadakan oleh Komputek dan BYON. Majalah ini akan dimuat di majalah komputek edisi 650.

Majalah ini berjudul AOS karena tema dari majalah ini adalah Animasi Open Source. Dalam majalah ini banyak sekali informasi mengenai animasi open source di Indonesia.

untuk mendownload majalah ini tunggu setelah acara lomba di Komputexpo berakhir.



Monday, October 26, 2009

Anggota JC jadi pemateri Seminar Internasional di Kamboja


8 Oktober 2009
Anggota JC yaitu Irene Erlyn, Putri Diah.K dan Rara Indah.P sedang foto bersama dengan setelah acara seminar Internasional di salah satu Universitas di Kamboja...














Salah satu anggota JC sedang presentasi..












Luar Biasa! Siswa SMKN 1 Surabaya Pencipta Kamus Negara-Negara Asean (Asean Dictionary) berbasis Mobile




Empat siswa Surabaya, Jawa Timur, dipercaya negara-negara ASEAN untuk merancang ASEAN Dictionary (kamus negara-negara ASEAN).Kamus itu nanti berisi terjemahan semua bahasa yang ada di negara Asia Tenggara dan menjadi panduan bagi turis. Kamus itu bahkan bisa menjadi alat penerjemah bagi seluruh warga Asia Tenggara yang ingin memperluas bahasa. Kamus ASEAN yang diciptakan siswa SMKN 1 Surabaya itu tidak berwujud buku atau lembaran kertas.Mereka berhasil menyediakan layanan terjemahan bahasa yang bisa diakses langsung melalui ponsel.



Kepala Bidang Pendidikan Menengah Kejuruan (Dikmenjur) Dinas Pendidikan Surabaya Ruddy Winarko menuturkan,empat siswa itu kini mulai “disewa” beberapa negara Asia Tenggara untuk memberikan penjelasan tentang mekanisme kerja Kamus ASEAN. “Ini menjadi kebanggaan tersendiri bagi Surabaya, apalagi siswa SMKN 1 Surabaya itu memberikan penjelasan pada teknisi serta kalangan akademisi di beberapa negara Asia Tenggara,”ujar Ruddy kemarin.Menurut mantan Kepala SMKN 1 Surabaya itu, saat ini empat siswa itu masih berada di Kamboja dan Vietnam.



Setelah itu diundang Pemerintah Thailand. “Jadi selama 2-3 bulan ke depan empat siswa itu berada di luar negeri. Untungnya lagi mereka (siswa) diberikan bayaran yang cukup tinggi. Mereka juga diberikan sarana menginap yang layak,” ungkapnya.Kamus ASEAN nantinya dijadikan rujukan semua negara Asia Tenggara.Keputusan itu dihasilkan dari keputusan beberapa negara yang melihat inovasi karya yang diciptakan siswa SMKN 1 Surabaya. Empat siswa SMKN 1 itu sebenarnya membuat tugas akhir semester di sekolah.



Kebetulan para siswa itu melihat peranan ponsel yang semakin dekat dengan masyarakat sehingga semua layanan publik bisa dikontrol langsung melalui ponsel. Salah satu siswa yang berangkat ke Kamboja adalah Rara Indah Permatasari, siswi kelas XII dan Muhammad Basofi Eko Nugroho, siswa kelas XII SMKN 1 Surabaya. Keduanya menjadi tamu kehormatan sekaligus trainer teknologi informasi (TI) di Kamboja. Keberangkatan mereka ke dua negara tersebut merupakan hasil rangkaian program pertukaran trainer kerja sama Pemkot Surabaya dengan Southeast Asian Ministers of Education Organization (Seamoe) Regional Open Learning Centre (Seamolec).



Kepala Dinas Pendidikan Surabaya Sahudi mengatakan, para siswa Surabaya yang berangkat menjadi pembicara serta penemu Kamus ASEAN layak diberikan apresiasi, apalagi usia siswa itu masih terbilang belia.“Karya yang diberikan siswa SMK kini sudah sejajar dengan perguruan tinggi (PT). Ini menjadi bukti perkembangan SMK di Surabaya,”ujarnya. (aan haryono)

[www.seputar-indonesia.com]

Monday, September 28, 2009

Membuat Tabel Model Untuk Sebuah Class menggunakan NetBeans

perlu diketahui kalo Swing dibuat menggunakan konsep MVC (Model View Controller), sehingga setiap komponen terdiri dari bagian Model, bagian View, dan bagian Controller.

  • Model, merupakan bagian yang digunakan untuk menampung data
  • View, merupakan bagian untuk menampilkan data
  • Controller, merupakan bagian yang digunakan untuk proses manipulasi data.

jadi walaupun ini membuat rumit, tapi ini membuat mudah programmer dalam membuat sebuah aplikasi.

Dalam kasus ini, yaitu TABEL, yang merupakan Model adalah TableModel. yang merupakan View adalah JTable. dan yang merupakan controller adalah proses insert, update, delete dan event yang digunakan oleh TableModel dan JTable.

Sekarang kita akan mencoba membuat sebuah class yang akan digunakan oleh TableModel, misal class Orang :


import java.util.Date;

public class Orang {

private String nama;

private String jenisKelamin;

private Date tanggalLahir;

private String alamat;

public Orang() {

}

public String getAlamat() {

return alamat;

}

public void setAlamat(String alamat) {

this.alamat = alamat;

}

public String getJenisKelamin() {

return jenisKelamin;

}

public void setJenisKelamin(String jenisKelamin) {

this.jenisKelamin = jenisKelamin;

}


public String getNama() {

return nama;

}

public void setNama(String nama) {

this.nama = nama;

}

public Date getTanggalLahir() {

return tanggalLahir;

}

public void setTanggalLahir(Date tanggalLahir) {

this.tanggalLahir = tanggalLahir;

}

}


sekarang kita buat sebuah class yang bernama TableModelOrang, yang merupakan class untuk model JTable. dan ingat class tersebut harus turunan dari interface TableModel :

import java.util.ArrayList;

import javax.swing.table.AbstractTableModel;

public class TableModelOrang extends AbstractTableModel {

// Kumpulan Data Orang

private ArrayList data;

public TableModelOrang() {

// Mendeklarasikan Data

data = new ArrayList();

}

// Menghapus Orang

public Orang remove(int index) {

Orang forReturn = data.remove(index);

// memberi tahu bahwa ada data yang dihapus

fireTableRowsDeleted(index, index);

return forReturn;

}

// Mendapatkan Orang

public Orang get(int index) {

return data.get(index);

}

// Menambah Orang

public boolean add(Orang e) {

boolean forReturn = data.add(e);

// Memberi tahu bahwa ada data yang masuk

fireTableRowsInserted(data.size() - 1, data.size() - 1);

return forReturn;

}

// Mengubah Orang

public Orang set(int index, Orang element) {

Orang forReturn = data.set(index, element);

// Memberitahu bahwa ada data yang diupdate

fireTableRowsUpdated(index, index);

return forReturn;

}

// Panjang Baris

public int getRowCount() {

return data.size();

}

// Panjang Kolom

public int getColumnCount() {

return 4;

}

// Nilai untuk cell(baris, kolom)

public Object getValueAt(int rowIndex, int columnIndex) {

switch (columnIndex) {

case 0:

return data.get(rowIndex).getNama();

case 1:

return data.get(rowIndex).getJenisKelamin();

case 2:

return data.get(rowIndex).getTanggalLahir();

case 3:

return data.get(rowIndex).getAlamat();

default:

return null;

}

}

// Nama Kolom pada posisi ke-?

public String getColumnName(int column) {

switch (column) {

case 0:

return "Nama";

case 1:

return "Jenis Kelamin";

case 2:

return "Tanggal Lahir";

case 3:

return "Alamat";

default:

return null;

}

}

}


sekarang kita buat sebuah form yang digunakan untuk memanipulasi data. buatlah form seperti dibawah ini menggunakan NetBeans IDE:


keterangan :

  • untuk nama menggunakan JTextField dan nama variablenya textNama
  • untuk jenis kelamin menggunakan JComboBox dan nama variabelnya comboJenisKelamin
  • untuk tangal lahir menggunakan JSpinner dan nama variablenya spinnerTanggalLahir
  • untuk alamat menggunakan JTextArea dan nama variablenya areaAlamat
  • untuk tombol tambah nama variablenya buttonTambah
  • untuk tombol ubah nama variablenya buttonUbah
  • untuk tombol hapus nama variablenya buttonHapus
  • untuk tabel nama variablenya tableOrang

sekarang ubah nilai model comboJenisKelamin menjadi [Laki-Laki, Perempuan] :

setelah itu ubah nilai model untuk spinnerTanggalLahir menjadi Date :


setelah itu buatlah sebuah variable TableModelOrang :


setelah itu inisialisasikan nilai awal model tersebut sebelum pemanggilan metode initComponents(), lalu set model tersebut ke tableOrang :



sekarang coba jalankan, maka akan terlihat seperti ini :



sekarang beri ActionListener ke tombolTambah dengan cara klik kanan tombolnya lalu pilih Events -> Action -> actionPerformed:



private voidOrang orang = buttonTambahActionPerformed(java.awt.event.ActionEvent evt) { Orang orang = new Orang();

orang.setNama(textNama.getText());

orang.setJenisKelamin((String) comboJenisKelamin.getSelectedItem());

orang.setTanggalLahir((Date) spinnerTangalLahir.getValue());

orang.setAlamat(areaAlamat.getText());

// menambahkan ke model

modelOrang.add(orang);

}


Sekarang beri aksi untuk tombol Ubah :

private void buttonUbahActionPerformed(java.awt.event.ActionEvent evt) {

if (tableOrang.getSelectedRowCount() == 0) {

// Data Table tak ada yang terseleksi

javax.swing.JOptionPane.showMessageDialog(this, "Silahkan Seleksi Data Tabel Dulu!");

} else {

Orang orang = new Orang();

orang.setNama(textNama.getText());

orang.setJenisKelamin((String) comboJenisKelamin.getSelectedItem());

orang.setTanggalLahir((Date) spinnerTangalLahir.getValue());

orang.setAlamat(areaAlamat.getText());

// Mengubah Data yang terseleksi

int index = tableOrang.convertRowIndexToModel(tableOrang.getSelectedRow());

modelOrang.set(index, orang);

}

}


Sekarang beri aksi untuk tombolHapus :

private void buttonHapusActionPerformed(java.awt.event.ActionEvent evt) {

if (tableOrang.getSelectedRowCount() == 0) {

// Data Table tak ada yang terseleksi

javax.swing.JOptionPane.showMessageDialog

(this, "Silahkan Seleksi Data Tabel Dulu!");

} else {

if (javax.swing.JOptionPane.showConfirmDialog(this, "Anda Yakin?") ==

javax.swing.JOptionPane.OK_OPTION) {

// menghapus data yang terseleksi

int index = tableOrang.convertRowIndexToModel

(tableOrang.getSelectedRow());

modelOrang.remove(index);

}

}

}


sekarang coba jalankan formnya :



see you at next trixxx……Rock with Java!!!!!!

Membuat Aplikasi Search dengan JAVA



private javax.swing.JFileChooser browse;
private javax.swing.JButton browse_btn, search_btn, reset_btn;
private javax.swing.JTextField browse_text, search_text;
private javax.swing.JTextArea area_search;
private javax.swing.JScrollPane pane_area;
private PanelFind panel;
private java.util.concurrent.ExecutorService tread;

private java.io.File dir;
private String keyword;
private RunFind findNow;

public FindFiles(){
super(”FindFiles”);

browse = new javax.swing.JFileChooser(”.”);
browse.setAcceptAllFileFilterUsed(false);
browse.setFileSelectionMode(javax.swing.JFileChooser.DIRECTORIES_ONLY);

browse_btn = new javax.swing.JButton(”Browse”);
browse_btn.addActionListener(new Aksi() );
search_btn = new javax.swing.JButton(”Search”);
search_btn.addActionListener(new Aksi() );
reset_btn = new javax.swing.JButton(”Reset”);
reset_btn.addActionListener(new Aksi() );

browse_text = new javax.swing.JTextField();
browse_text.setForeground(java.awt.Color.BLACK);
browse_text.setEnabled(false);
search_text = new javax.swing.JTextField();

area_search = new javax.swing.JTextArea();
area_search.setEditable(false);
pane_area = new javax.swing.JScrollPane(area_search);
tread = java.util.concurrent.Executors.newCachedThreadPool();

panel = new PanelFind(this);
add(panel);

setLocation(200,200);
pack();

setResizable(false);
setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
}

public void browse(){
int valid = browse.showOpenDialog(this);
if(valid == javax.swing.JFileChooser.APPROVE_OPTION){
dir = browse.getSelectedFile();
browse_text.setText(dir.getPath());
}else{
return ;
}

}

public void search(){
keyword = search_text.getText();
area_search.setText(”");
if(keyword.length()<1){ dir ="=" findnow =" new" ex =" java.util.concurrent.Executors.newCachedThreadPool();">

public void reset(){
keyword = “”;
dir = null;
search_text.setText(”");
browse_text.setText(”");
area_search.setText(”");
}

public static void main (String[] args) {
FindFiles baru = new FindFiles();
baru.setVisible(true);
}

private class Aksi implements java.awt.event.ActionListener{

public void actionPerformed(java.awt.event.ActionEvent event){
String command = event.getActionCommand();
if(command.equals(”Browse”)){
browse();
}else if(command.equals(”Reset”)){
reset();
}else if(command.equals(”Search”)){
search();
}
}

}

private class PanelFind extends javax.swing.JPanel{

private javax.swing.JFrame parent;
private java.awt.GridBagLayout layout;
private java.awt.GridBagConstraints constrait;

public PanelFind(javax.swing.JFrame parent){

this.parent = parent;
layout = new java.awt.GridBagLayout();
constrait = new java.awt.GridBagConstraints();
constrait.insets = new java.awt.Insets(5,5,5,5);
constrait.fill = java.awt.GridBagConstraints.BOTH;

setLayout(layout);
addComp(browse_text,0,0,2,1,0,0);
addComp(browse_btn,2,0,1,1,0,0);
addComp(search_text,0,1,1,1,200,0);
addComp(reset_btn,1,1,1,1,0,0);
addComp(search_btn,2,1,1,1,0,0);
addComp(pane_area,0,2,3,1,0,400);

}

public void addComp(javax.swing.JComponent comp, int kolom, int baris, int lebar, int tinggi, int lebarmanual, int tinggimanual){
constrait.gridx = kolom;
constrait.gridy = baris;
constrait.gridwidth = lebar;
constrait.gridheight = tinggi;
constrait.ipadx = lebarmanual;
constrait.ipady = tinggimanual;
layout.setConstraints(comp, constrait);
add(comp);
}

}

private class RunFind implements Runnable{

private String key;
private int count;
private FindFiles parent;

public RunFind(FindFiles parent){
this.key = keyword.startsWith(”.”) ? keyword : “.”+keyword;
this.count = 0;
this.parent = parent;
}

public synchronized void AddFiletoArea(java.io.File folder){
if(folder.isDirectory()){
java.io.File[] files = folder.listFiles();
for(java.io.File i : files){
AddFiletoArea(i);
try{
Thread.sleep(1);
}catch(InterruptedException e){
}
}
}else{
if(folder.getName().toUpperCase().endsWith(key.toUpperCase())){
area_search.append(folder.getPath()+”\n”);
count += 1;
}
}
}

public void run(){
parent.setEnabled(false);
java.io.File[] files = dir.listFiles();
for(java.io.File i : files){
AddFiletoArea(i);
try{
Thread.sleep(1);
}catch(InterruptedException e){
}
}
area_search.append(”—-FINISH—-\n”);
area_search.append(”There Are “+count+” Files Found”);
parent.setEnabled(true);
}
}

}

Design by - JC Team | SMK Negeri 1 Surabaya