Anda di halaman 1dari 16

LAPORAN pemrograman dekstop

PERTEMUAN KE 5 dan 6



Disusun Oleh :
Nama : Mohamad Hanafi
Nim : 095410134
Jurusan : TEKNIK INFORMATIKA

LABOROTARIUM TERPADU
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER
AKAKOM
YOGYAKARTA
2011


PERTEMUAN KE 5
PENGELOLAAN FILE TEXT
A. PEMBAHASAN
Pemilih berkas menyediakan user interface berbasis grafis untuk mengelola system berkas
(file system) dan kemudian user dapat memilih file atau direktori dari daftar atau
memasukkan nama berkas atau direktori.untuk menampilkan pemilih berkas dapat
menggunakan class JfileChooser yang menampilkan dialog modal yang secara default
memuat pemilih berkas.

Pelaksanaan Praktikum :
Dibawah ini adalah tampilan desain form :

Berikut yang digunakan form didalam jendela neatbeans :

1
Class
Variable name
Text
JButton
Btnnew
new
2 Class
Variable name
Text
JButton
BtnOpen
Open
3 Class
Variable name
Text
JButton
Btnsave
save
4 Class
Variable name
Text
JButton
BtnSaveAs
Save As

5
Class
Variable name
Text
JButton
BtnKeluar
Keluar
6 Class
Variable name
Autoscroll
JEditorPane
editor
true

package pmodul5;
import javax.swing.*;
import java.io.*;
import javax.swing.filechooser.FileFilter;
Pada perintah-perintah berikut yaitu untuk memanggil seluruh kelas-kelas yang telah
dideklarasikan atau untuk untuk menambahkan/mengimport beberapa library yang
diperlukan dalam pembuatan aplikasi pengolahan .

public class fNotes extends javax.swing.JFrame {
JFileChooser fc;
File file;
boolean fileBaru;
final String[] EXT = { ".csv" };
final String[] EXT2 = { ".txt", ".java" };
private Object edotor;
/** Creates new form fNotes */
public fNotes() {
initComponents();
this.setTitle("Untitled - NOTES");
fc = new JFileChooser();
fc.addChoosableFileFilter(new jenisFile(EXT));
fc.addChoosableFileFilter(new jenisFile(EXT2));
fc.setAcceptAllFileFilterUsed(false);
fileBaru = true;
}
Pada deklarasi kelas berikut ini adalah untuk membuat tampilan notepad sederhana yang
mana pada notepad sederhana tadi memilki tipe .csv .txt dan .java notepad tersebut hanya
bisa mampu membaca tipe-tipe tersebut selagi program tersebut dijalankan. jenis file yang
dapat dibuka dan ditampilkan dimasukkan dalam variable fc dengan memanggil
fungsi/method JfileChooser .dalam variable fc tadi menambahkan dalam filterfile jenis file
yang dapat dibuka dengan memanggil variable EXT dan EXT2 tadi. jika file merupakan file baru
maka filebaru akan diset true. Seperti pada tampilan berikut ini :


private void btnNewActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
editor.setText("");
editor.requestFocus();
this.setTitle("Untitled - NOTES");
fileBaru = true;
}
Deklarasi diatas fungsinya apabila ada document baru dimana editor tersebut akan diset
menjadi kosong ketika tombol new ditekan dan kursor akan focus pada editor tersebut
(editor.requestokus()) pada document baru yang dibuat ini kita set title dari document Untitled-
Notes dan kita set filebaru= true agar saat disave menampilkan jendela open dialog untuk
disimpan dimana dalam document tersebut setelah diberi nama maka document tersebut tidak
menjadi kosong, apabila program akan membukannya kembali dari document yang telah dibuat
yang dulu belum dikasih nama setelah diberi nama maka ada namanya dalam program
tersebut.
private void btnSaveAsActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (fc.showSaveDialog(this)== JFileChooser.APPROVE_OPTION){
file = fc.getSelectedFile();
if (!file.exists() || okToReplace())
SimpanFile();
}
}
Pada deklarasi diatas variable fc menampilkan save dialog maka fc akan mengambil nilai file
yang nantinya akan disimpan dalam variable file.jika nilai variable file tidak /blm ada dalam disk
dan tidak direplaace maka file akan disimpan dengan nama sesuai keinginan dengan
memanggill fungsi simpanfile(). Dan apabila dalam satu folder program menemukan file/nama
yang sama maka program akan melakukan mereplace atau menindih program yang sama tadi
dengan syarat program akan mengkonfirmasi dulu user atau pengguna pilihan ya atau tidak.
Seperti pada tampilan berikut ini :

private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (fileBaru)
btnSaveAs.doClick();
else
SimpanFile();
}
Pada potongan scrip diatas jika ketemu dengan variable filebaru maka akan menakan/klik pada
btnsave dan akan mengeluarkan jendela open dialg untuk penyimpanan file jika tidak maka akan
memanggil fungsi/method Simpanfile() yang telah kita buat sebelumnya.sehingga tidak akan
menampilkan opendialog karena sebelumnya file sudah tersimpan.
private void btnOpenActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int hasil = fc.showOpenDialog(this);
if (hasil == JFileChooser.APPROVE_OPTION) {
file = fc.getSelectedFile();
try {
editor.read(new FileInputStream(file), null);
}catch (IOException e) {
msg("Gagal Buka File : "+file.getName() );
return;
}
}
this.setTitle(file.getName()+" - NOTES");
fileBaru = false;
}
Perintah diatas digunakan untuk membuka file yang akan dibuka. variable hasil digunakan untuk
menyimpan hasil file chooser dalam membuka dan memilih file yang akan dibuka .jika file yang
dibuka benar .dan saat file choser memilih file yang hasilnya disimpan dalam variable file maka
editor akan membaca isi file jika tidak maka akan memanggil fungsi/method msg untuk
menampilkan pesan kesalahan dalam membuka file dengan message gagal membuka file +nama
file dan jika dibuka maka document akan diset judul menjadi nama file +keterangan notes dan
menggangap file tesebut bukan file baru karena file sudah ada sehingga mengeset filebaru
menjadi false shinnga saat kita tekan tombol save open dialog tidak akan keluar .hanya
mnyimpan dengan nama file yang sama.kecuali jika kita akan menyimpan dengan nama yang
berbeda dengan menekan tombol save as. Seperti pada tampilan berikut ini :

private void btnKeluarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.exit(0);
}
Scrip ini digunakan untuk mengeluarkan form atau menutupaplikasi yang dijalankankan program.
Adapun dalam pembuatan diatas tersebut atau scrip-scrip yang telah kita buat perlu untuk
melengkapkan program supaya user untuk menjalankan program tidak kesulitan apabila ada
keganjalan atau kekeliruan program akan menampilkan pesan-pesan. Program ini ditulis pada
bagian paling bawah dari source yang berada pada sesudah variable declaration adapun scrip-
scripnya ada dibawah ini :
Perintah diatas mendeklarasikan method pesan dengan memunculkan message dialog dengan
nama method msg .yang nantinya akan dipanggil ketika terjadi kesalahan dalam pemilihan file
maupun penyimpanan file.
private boolean okToReplace() {
return (JOptionPane.showConfirmDialog(this,
"File "+file.getName()+" Sudah Ada\n"+
"Akan Ditimpa ?",
"Peringatan",JOptionPane.YES_NO_OPTION)==0);
}
Script ini berfungsi apabila dalam program yang telah dideklarasikan diatas terjadi kesamaan
nama document didalam satu folder yang telah dibuka maka program ini akan menimpa atau
meraplace untuk dijadikan menjadi satu file dengan ketentuan user ditampilkan untuk menimpa
folder atau tidak. Seperti pada tampilan berikut ini :



private void msg(String pesan) {
JOptionPane.showMessageDialog(this,pesan,"Informasi",
JOptionPane.INFORMATION_MESSAGE);
}
private void SimpanFile() {
PrintWriter pw = null;
try {
pw = new PrintWriter(new BufferedWriter(new
FileWriter(file)));
} catch (IOException e) {
msg("Gagal Simpan File : '" + file.getName());
return;
}
pw.print(editor.getText());
pw.close();
this.setTitle(file.getName()+" - NOTES" );
fileBaru = false;
}
Perintah diatas merupakan mendeklarasikan method untuk menyiman file yang telah dibuat.
variable pw mendeklaraikan penulisan file yang diambil dari variable file dengan memanggil fungsi
bufferwriter .jika penyimpanan tidak sesuai dengan penempatan/tipe file yang ada diprogram atau
bisa jadi disk yang untuk digunakan untuk penyimpanan tidak ada atau dalam keadaan rusak maka
akan memanggill method msg dimana akan diberi peringatan gagal simpan file + nama file yang
akan disimpan.jika file berhasil disimpan dengan nama yang ditentukan maka document file akan
berjudul.nama file yang disimpan + notes(ditambah keterangan notes).dan untuk menyimpan lagi
berarti file termasuk bukan file baru dan mengeset file baru menjadi false. Seperti tampilan berikut
ini :

class jenisFile extends FileFilter {
private String[] s;
jenisFile(String[] sArg) {
s = sArg;
}
public boolean accept(File fArg) {
if (fArg.isDirectory())
return true;
for (int i = 0; i < s.length; ++i)
if
(fArg.getName().toLowerCase().indexOf(s[i].toLowerCase()) > 0)
return true;
return false;
}
public String getDescription() {
String tmp = "";
for (int i = 0; i < s.length; ++i)
tmp += "*" + s[i] + " ";
return tmp;
}
}
}
Pada perintah diatas merupakan class yang digunakan untuk menentukan jenis file yang akan
ditampilkan.dengan mengambil nama pada perintah frg.getname.
B. KESIMPULAN
Dalam pembuatan aplikasi pengelolaan file text diperlukan class JFilechooser dan
JeditorPane sehingga diperlukan beberapa library yang belum ada dalam paket java :
import javax.swing.*;
import java.io.*;
import javax.swing.filechooser.FileFilter;
utnuk membuat aplikasi pengolahan file text kita dapat menggunakan
JtextArea,JtextPane,JeditorPane.,menyesuaikan kebutuhan

C. TUGAS
1. Persamaan JtextArea,JtextPane dan JtexteditorPane:sama-sama digunakan dalam
pegolahan text,.sama-sama bisa diatur lebar/tingginya(ukuran)
Perbedaan :
a. JtextArea:
Pada Jtext area jika kita menulis kalimat panang dan melebihi lebar area
JTextarea maka tulisan tetap akan kesamping dan tidak ganti baris .untuk ganti
baris perlu dienter dahulu.sehingga scrollbar horizontal akan semakan
bertambah selama teks yang diketikan tidak ganti-ganti baris .dan jika ganti
baris dan sudah melebihi tinggi area Jarea text maka scrollbar vertikalpun juga
akan bertambah./muncul.
b. JtextPane
Pada komponen JtextPane jika kita mengetik kalimat melebihi area text
Jtextpane maka pada Jtextarea akan otomatis menggantii baris kalimat
tersebut..sehingga pada Jtextpane tidak ada scrool horisontalnya.
c. JtextEditorPane
Pada komponen JtextPane hampir sama dengan JtexPane .jika kita menulis
kalimat yang panjang melebihi area JeditorPane maka otomatis akan
mengganibaris secara otomatis.pada JeditorPane jika area sudah penuh dengan
tulisan maka akan muncul scroolbar horizontal maupun vertical.

Lihat perbedaan ketiga komponen tersebut:


2. Untuk membuat OpenDialog dengan FileChooser hanya memilih Directory saja
(tanpa file),yaitu dengan megubah perintah pada button Open menjadi seperti
berikut ini :
private void btnOpenActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int hasil = fc.showOpenDialog(this);
if (hasil==JFileChooser.APPROVE_OPTION){
file =fc.getCurrentDirectory();
try {
editor.read(new FileInputStream(file), null);
}catch (IOException e){
msg ("Gagal Buka File : "+file.getName());
return;
}
}
this.setTitle(file.getName()+" - NOTES");
fileBaru = false;
}


D. LISTING
Terlampir





PERTEMUAN KE- 6
APLIKASI IMAGE VIEWER


A. PEMBAHASAN
Gambar atau image sering digunakan dalam suatu aplikasi, baik bertujuan untuk
memperjelas informasi atau juga sekedar untuk memperindah tampilan, akan tetapi
beberapa aplikasi lai memang bertujuan sebagai pengelola image. Komponen swing
lebih disukai karena memiliki proses internal yang memudahkan seperti media Tracker,
dan juga dengan swing akan mengurangi terjadinya flicker saat menampilkan gambar
ang cukup besar.

Pembahasan praktikum :
Dibawah ini adalah beberapa komponen yang digunakannya :
1 Class
Variable name
text
JButton
BtnPilih
Pilih
2 Class
Variable name
text
JButton
BtnHapus
Hapus Pilihan
3 Class
Variable name
model
JList
lstdaftar
[kosongkan]
4 Class
Variable name
text
JCheckbox
chkFit
Fit Lebar Frame Gambar
5 Class
Horizontal size
Vertical size
Horizontal
Reziseable
Vertikalresizeable
JScroolPane
200
200
False
False

6 Class
Variable name
text
JLabel
lblGambar
[kosongkan]
Maka akan tampil seperti hasil dibawah ini :


package pmodul6;
import javax.swing.filechooser.FileFilter;
import java.io.*;

/**
*
* @author MOHAMAD HANAFY
*/
public class jenisFile extends FileFilter {
private String[] s;

public jenisFile(String[] sArg) {
s = sArg;
}

@Override
public boolean accept(File fArg) {
if (fArg.isDirectory())
return true;

for (int i = 0; i < s.length; ++i)
if
(fArg.getName().toLowerCase().indexOf(s[i].toLowerCase()) > 0)
return true;
return false;
}

@Override
public String getDescription() {
String tmp ="";
for (int i = 0; i < s.length; ++i)
tmp += "*" + s[i] + "";
return tmp;
}

}
Script diatas merupakan script tambahan class yang diperlukan dalam pembuatan aplikasi
viewer image utntuk mendapatkan jenis file yang akan dipilih jika file fArg adalah
direktori maka akan bernilai benar dan akan dilakukan perulangan untuk mendapatkan
jenis file baik nama maupun type jenis file dengan memanggil perintah getName().
package pmodul6;
import java.awt.Image;
import javax.swing.*;
import java.io.*;
import javax.swing.filechooser.FileFilter;

/**
*
* @author MOHAMAD HANAFY
*/
public class fGambar extends javax.swing.JFrame {
DefaultListModel gambar;
final String[] EXT= {".jpg",".jpeg",".gif",".tiff",".png"};

/** Creates new form fGambar */
public fGambar() {
initComponents();
gambar = new DefaultListModel();
lstDaftar.setModel(gambar);
}
Pada perintah import java.awt.Image,import.javax.swing.*,import java.io.* dan import
javax.swing.filechooser.FileFilter diatas digunakan untuk memanggil /mengimport
beberapa library yang diperlukan dalam pembuatan aplikasi viewer image. Pada class
fGambar untuk mendeklarasikan type gambar apabila program dijalankan akan muncul
sesuai tipe-tipe yang dideklarasikannya. Sedangkan dalam public fGambar() untuk
mendeklarasikan terlebih dahulu berguna untuk mempermudah program agar tidak
kebanyakan tag-tag yang dipanggil dalam contoh ini adalah berupa String. variable gambr
akan menyimpan fungsi dari default list model. dan pada kmponen Jlist
memanggil/mengeset model dari fungsi default list model. variable gambar yang
menyimpan nilai dari default list model.
private void btnPilihActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JFileChooser fc = new JFileChooser();
fc.addChoosableFileFilter(new jenisFile(EXT));
int hasil = fc.showOpenDialog(this);
if (hasil == JFileChooser.APPROVE_OPTION){
File file = fc.getSelectedFile();
String nf = file.getAbsolutePath();
gambar.addElement(nf);
}
}
Pada scrip diatas digunakan untuk memilh gambar yang akan ditampilkan. dalam script
diatas terlihat kita menggunakan library pada Jfilechooser dengan memanggilnya dan
disimpan dalam variable fc.kemudian pada variable fc melakukan penambahan file yang
dipilih dengan menggunakan class jenisfile untuk menentukan jenis file yang dipilih.
dimana dalam perintah ini akan menampilkan open dialog dalam pemilihan gambar yang
kemudian gambar yang terpilih disimpan dalam variable hasil. pada variable yang telah
kita buat mengambil/memilih file yang diinginkan dengan perintah
fc.getselectedfile.untuk mendapatkan nilai file yang diambil.dimana nilai tersebut
disimpan dalam variable file. String nf=file.getAbsolutePath();merupakan script untuk
mendapatkan path file lokasi berada dimana nilai dari path tersebut dimasukkan
/disimpan dalam variable nf. gambar.addElement(nf);merupakan script untuk
menambahkan list gambar yang dipilih kedalam daftar list (lstDaftar) sehingga pada list
daftar diperoleh nama path dan file yang dipilih.
private void btnHapusActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int index = lstDaftar.getSelectedIndex();
gambar.remove(index);
lblGambar.setIcon(null);
}
Script ini bertujuan apabila user membuka file gambar lebih dari satu maka file yang
dipilih dan memilih button Hapus pilihan maka file tersebut akan dihapus oleh program
tang ada di button Hapus pilihan dan pada saat lstDaftar filenya dihapus maka pada saat
itu pula yang ada dilblGambar akan menset icon menjadi null dalam hal ini program
lblGambar.setIcon(null); akan bekerja.

private void lstDaftarMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
String nf = lstDaftar.getSelectedValue().toString();
ImageIcon gbr = new ImageIcon(nf);
if (chkFit.isSelected())
gbr = new ImageIcon(gbr.getImage().getScaledInstance(200,
-1, Image.SCALE_DEFAULT));
lblGambar.setIcon(gbr);
}
Pada script diatas digunakan saat kita pilih beberapa gambar kemudian kita klik salah satu
list daftar gambar pada komponen Jlist(lstDaftar) maka gambar akan muncul pada lbl
gambar.dari komponen Jlist kita ambil nilai ketika pada komponen tersebut diklik dengan
mouse dimana nilai tersebut disimpan dalam variable nf.nilai nf dipanggil dengan
memanggil juga fungsi imageicon.dimana nilai yang diperoleh disimpan dalam variable
gbr. nilai tersebut merupakan gambar yang dipilih. ketika komponen Jcheckbok (chkfit)
dipilih maka nilai yang tersimpan pada gbr akan dilakukan resize dengan memanggil
perintah get.scaledInstance dimana gambar yang terpilih akan diset sesuai dengan yang
telah kita tentukan (200) dimana nilia tersebut disimpan dalam variable gbr. Pada
komponen Jlabel(lblGambar). menggunakan setIcon dari variable gbr yang menyimpan
nilai gambar yang dipilih tadi dari lstdaftar.sehingga dengan potongan scrip tersebut
gambar akan diset ukuran sesuai dengan yang telah diset(200,-1).
private void chkFitActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String nf = lstDaftar.getSelectedValue().toString();
ImageIcon gbr = new ImageIcon(nf);
if (chkFit.isSelected())
gbr = new ImageIcon(gbr.getImage().getScaledInstance(200, -1,
Image.SCALE_DEFAULT));
lblGambar.setIcon(gbr);
}
Deklarasi diatas adalah berguna untuk menjadikan gambar menjadi terlihat semua pada
lblGambar yang semula pada saat belum diberi centang pada FitFrameGambar maka
gambar akan tampak pada aslinya sehingga pada from lbl tidak untuk menampilkan
semua gambar penuh untuk itulah diberikan program if (chkFit.isSelected()) gunanya apabila
kotak pada chkFit dicentang maka gbr = new ImageIcon(gbr.getImage().getScaledInstance(200, -1,
Image.SCALE_DEFAULT)); yang artinya gambar akan berubah sesuai yang telah diset(200,-1)
pada form peletakan gambar tidak juga berubah besar maupun kecil yang berubah adalah pada
gambarnya yaitu gambar akan berubah secara default (terihat semua) pada form lblGambar.
private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int index = lstDaftar.getSelectedIndex();
lstDaftar.setSelectedIndex(index-1);
String nf = lstDaftar.getSelectedValue().toString();
ImageIcon gbr = new ImageIcon(nf);
if (chkFit.isSelected())
gbr = new ImageIcon(gbr.getImage().getScaledInstance(200, -1,
Image.SCALE_DEFAULT));
lblGambar.setIcon(gbr);
}
Pada script diatas menjelaskan untuk int index = lstDaftar.getSelectedIndex(); yaitu
memilih form yang ada di lstDaftar atau mendeklarasikan terlebih dahulu untuk
memudahkan program untuk memanggil deklarasi tersebut. Setelah program jadi maka
pada button Back akan menjalankan program apabila user memilih gambar yang ada di
pilihan gambar tepatnya di lstDaftar user tidak perlu lagi untuk mengklik pakai mouse
cukup dengan menekan tombol Back. Fungsi dalam program ini adalah terletak pada
lstDaftar.setSelectedIndex(index-1); karena pada index-1 program akan menghitung
mundur atau mengurangi pilihan menu.
private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int index = lstDaftar.getSelectedIndex();
lstDaftar.setSelectedIndex(index+1);
String nf = lstDaftar.getSelectedValue().toString();
ImageIcon gbr = new ImageIcon(nf);
if (chkFit.isSelected())
gbr = new ImageIcon(gbr.getImage().getScaledInstance(200, -1,
Image.SCALE_DEFAULT));
lblGambar.setIcon(gbr);
}
Script ini hampirlah sama cara kerjanya untuk menjalankan programnya dengan btnBack
bedannya disini adalah terletak pada (index+1); soalnya disini program akan membaca
maju pada pilihan menu yang ada di lstDaftar yang terletak pada
lstDaftar.setSelectedIndex(index+1); .

B. KESIMPULAN
Untuk membuat aplikasi viewer gambar diperlukan bebrapa library import
java.awt.Image;
import javax.swing.*;
import java.io.*;
import javax.swing.filechooser.FileFilter;
Komponen AWT dibutuhkan saat melakukan rezise ukuran gambar.
Diperlukan class tambahan dan beberapa dalam pembuatan aplikasi image viewer yaitu
class jenis file untuk menentukan jenis file gambar yang akan ditampilkan.


C. TUGAS
private void btnKeduaMouseEntered(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
//btnKedua.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/Tmodul6/tugaske6.JPG")));
ImageIcon gbr = new
ImageIcon("D:/Program_Java/Java_Netbeans/Tmodul6/tugaske6.JPG");
gbr = new ImageIcon(gbr.getImage().getScaledInstance(200,-1, Image.SCALE_DEFAULT));
btnKedua.setIcon(gbr);

}

private void btnSatuMouseEntered(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
ImageIcon gbr = new
ImageIcon("D:/Program_Java/Java_Netbeans/Tmodul6/download.JPG");
gbr = new ImageIcon(gbr.getImage().getScaledInstance(100,-1, Image.SCALE_DEFAULT));
btnSatu.setIcon(gbr);
}
Hasilnya :
Sebelum dklik dengan mouse :














Sesudah dklik dengan mouse :


D. LISTING
Terlampir