Published by Martinus Ady H on November 7th, 2009 in Java, NetBeans | 15 Comments
Beberapa minggu terakhir ini, saya mendapatkan 2 pertanyaan tentang Bagaimana sih agar progress bar bisa berjalan pada saat proses Query ? dan Bagaimana sih cara membuat sebuah login dialog yang menampilkan progress bar ? Nah karena 2 pertanyaan tersebut saling berkaitan menurut saya (sama-sama ingin menjalankan Progress Bar pada saat aplikasi sedang menjalankan tugas/proses yang lain) maka akan saya jawab bersama-sama pada tulisan ini
. Nah sebelum kita masuk ke penjelasan lebih detail, kita harus tahu dahulu dong kenapa kita tidak bisa secara langsung menjalankan progress bar di saat kita melakukan proses yang lain ? Ada yang tahu kenapa ? Ini karena semua “Event Handling” yang terdapat pada Java Swing dijalankan oleh Thread yang bernama Event Dispatch Thread (EDT) Waks.. Thread ? Yaps betul Thread
Agar aplikasi yang kita bangun di Java Swing tidak terlihat nge-“freeze” (tidak responsif/nge-hang), maka kita juga perlu tahu beberapa Thread yang terdapat di Java Swing. Thread-thread tersebut yaitu :
- Initial Thread
Thread ini bertugas untuk menjalankan method main dari aplikasi Swing kita dan thread ini bertugas untuk menampilkan GUI (Graphical User Interface) yang sudah kita bangun diatas Swing ke layar. Setelah GUI (Graphical User Interface) tampil, maka kerja dari thread ini telah selesai dan akan dilanjutkan oleh Event Dispatch Thread.
- Event Dispatch Thread
Setiap aplikasi berbasis Java Swing hanya dapat mempunyai 1 Event Dispacth Thread (EDT) saja. Setiap respon dari penekanan tombol, menu item, update tampilan komponen akan dijalankan oleh thread ini. Dan semua proses tersebut biasanya tidak membutuhkan waktu yang lama. Jadi, segala proses yang dijalankan pada thread ini harus selesai secepat mungkin agar aplikasi kita tidak terlihat nge-“freeze” (tidak responsif/nge-hang) .
- Worker Thread
Worker thread atau biasanya disebut dengan background thread ini berfungsi untuk menjalankan proses yang lama seperti pembacaan direktori pada file system atau proses query ke database. Gunakan thread ini untuk melakukan operasi atau proses yang kita tidak bisa menentukan kapan kira-kira proses tersebut selesai.
Read More ..
Tags: SwingWorker
Published by Martinus Ady H on November 6th, 2009 in Java, Linux, NetBeans, OpenSolaris, Other, Shell Script | 2 Comments
Pernah merasa butuh mengedit file PDF ? Jika jawaban-nya adalah Ya dan file PDF yang ingin di edit/dimodifikasi tidak begitu kompleks mungkin kita bisa menggunakan Sun PDF Import Extension dari OpenOffice.org yang bisa kita gunakan untuk memodifikasi file PDF
Sedangkan beberapa fitur yang akan kita dapatkan jika kita menginstall extension
Sun PDF Import Extension ini adalah :
- Text attributes like font family, font size, weight (bold, not bold), style (italic, not italic) are imported together with their respective text
- Retain font appearance, when a PDF file uses a font not installed on your system, the font is replaced with the best alternative font
- Converts images and vector graphics
- Each line in a paragraph is converted into one text object
- Import of password-protected PDF files
- Import shapes with default style
- Support for colors and bitmaps
- Backgrounds remain behind other elements
Sedangkan beberapa fitur yang belum didukung yaitu :
- Native PDF forms
- Proper paragraphs
- Processing layout of LaTeX PDF
- Import of complex vector graphics elements
- Conversion of tables
- Import of EPS graphics
- RTL (right-to-left) text/font support
Read More ..
Published by Martinus Ady H on October 31st, 2009 in Java, NetBeans | 18 Comments
Bingung bagaimana caranya menambahkan background image ke dalam JDesktopPane di NetBeans IDE ? Nah kalau bingung, sekarang buatlah sebuah project dahulu di NetBeans IDE kemudian buatlah 1 buah Java Class dengan nama JImageDesktopPane (nama class terserah keinginan masing-masing
) kemudian pastekan kode dibawah ini :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| /*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jdesktoppanebackground;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JDesktopPane;
/**
*
* @author Martinus Ady H <mrt .itnewbies@gmail.com>
*/
public class JImageDesktopPane extends JDesktopPane {
private Image image;
public JImageDesktopPane() {
}
@Override
protected void paintComponent(Graphics g) {
try {
image = new javax.swing.ImageIcon(getClass().getResource("netbeans6ns0.png")).getImage();
if (g != null) {
g.drawImage(image,
(this.getSize().width - image.getWidth(null)) / 2,
(this.getSize().height - image.getHeight(null)) / 2,
null);
}
} catch (NullPointerException npe) {
System.out.println("Can't find images !!");
}
}
}
</mrt> |
Baris paling penting diatas terdapat pada baris ke 25, karena pada baris ke 25 kita mencoba mengambil gambar yang ingin kita jadikan sebagai Background Image dan sedangkan method paintComponent(Graphics g) pada baris 23-37 ini kita gunakan jika kita ingin mengubah-ubah tampilan dari JComponent di Java Swing
Nah jika sudah selesai, sekarang simpan gambar dibawah ini dengan nama netbeans6ns0.png pada direktori project

Save Image As Gambar Ini
Read More ..
Published by Martinus Ady H on October 30th, 2009 in Java, NetBeans | No Comments
Bingung dengan judul diatas ? Saya sendiri sebenarnya juga bingung karena kejadian yang saya alami ini juga kadang-kadang saja terjadi
. Dan seperti-nya ini berkaitan dengan project yang menggunakan JPA (menggunakan TopLink atau Hibernate JPA di NetBeans IDE) , ceritanya saya mendapatkan pesan error seperti dibawah ini ketika melakukan proses kompilasi project :
/home/martinus/JDKBUG/project-jdkbug-gen/com.artivisi.jdkbug.domain/dist/com.artivisi.jdkbug.domain.jar(com/artivisi/jdkbug/domain/SampleDomain.class): warning: Cannot find annotation method 'name()' in type 'javax.persistence.Table': class file for javax.persistence.Table not found
/home/martinus/JDKBUG/project-jdkbug-gen/com.artivisi.jdkbug.domain/dist/com.artivisi.jdkbug.domain.jar(com/artivisi/jdkbug/domain/SampleDomain.class): warning: Cannot find annotation method 'mappedBy()' in type 'javax.persistence.OneToMany': class file for javax.persistence.OneToMany not found
An exception has occurred in the compiler (1.6.0_16). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
com.sun.tools.javac.code.Symbol$CompletionFailure: class file for javax.persistence.TemporalType not found
/home/martinus/JDKBUG/project-jdkbug-gen/com.artivisi.jdkbug.ui/nbproject/build-impl.xml:349: The following error occurred while executing this line:
/home/martinus/JDKBUG/project-jdkbug-gen/com.artivisi.jdkbug.service/nbproject/build-impl.xml:365: The following error occurred while executing this line:
/home/martinus/JDKBUG/project-jdkbug-gen/com.artivisi.jdkbug.service/nbproject/build-impl.xml:168: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 1 second)
Nah aneh-nya library Hibernate-JPA sudah saya tambahkan pada project-domain dan project-service-impl, kalau saya melakukan proses kompilasi di project-domain dan di project-service-impl masalah ini tidak timbul. Tapi kalau melakukan proses kompilasi dari UI, baru deh muncul itu pesan error
Coba googling cuma mendapatkan 3 link saja, yang sepertinya menandakan bahwa jarang yang mendapatkan pesan error seperti di atas
Setelah membaca Bug ID 6550655 ternyata solusinya gampang, yaitu tambahkan library TopLink atau Hibernate JPA di setiap project yang membutuhkan project-domain
Semoga berguna buat teman-teman yang mengalami kasus yang sama
Tags: com sun tools javac code Symbol$CompletionFailure: class file for javax persistence TemporalType not found
Published by Martinus Ady H on October 17th, 2009 in Java, NetBeans | 11 Comments
Pasti teman-teman sekarang sudah tahu kan bagaimana cara menjalankan aplikasi yang ditulis dengan menggunakan bahasa pemrograman Java ? Yaps cara-nya sih sangat sederhana, kita tinggal mengetikkan perintah java [nama_class] untuk menjalankan sebuah class di java dan mengetikkan perintah java -jar [nama_app.jar] untuk menjalankan sebuah file jar di java
Nah sekarang jika sudah tahu, pernahkah teman-teman melihat opsi apa saja yang terdapat pada perintah java ??? Kalau ada yang bingung bagaimana cara menampilkan opsi yang terdapat pada perintah java, cobalah jalankan perintah java tanpa memberikan parameter apapun dan jika benar maka kita akan mendapatkan tampilan seperti dibawah ini :
martinus@martinusadyh:~/Latihan/Java$ java
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-d32 use a 32-bit data model if available
-d64 use a 64-bit data model if available
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is server,
because you are running on a server-class machine.
-cp
-classpath
A : separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D=
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:
...|:]
-enableassertions[:
...|:]
enable assertions
-da[:
...|:]
-disableassertions[:
...|:]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:
[=
]
load native agent library
, e.g. -agentlib:hprof
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:
[=
]
load native agent library by full pathname
-javaagent:[=
]
load Java programming language agent, see java.lang.instrument
-splash:
show splash screen with specified image
martinus@martinusadyh:~/Latihan/Java$
Read More ..