Program ini dibuat menggunakan NetBeans IDE 6.9, terdiri dari 5
packages. Sekarang saya akan membuat packages yang pertama dengan nama
“Chat” (tanpa tanda kutip). Di dalam packages Chat terdapat 2 class
java, yaitu ChatDisplay.java dan ChatRoom.java
Sekarang kita buat dulu class ChatDisplay.java
=====================================
package Chat;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import java.awt.BorderLayout;
public class ChatDisplay extends JPanel {
private JTextArea chat;
public ChatDisplay() {
setLayout(new BorderLayout());
chat=new JTextArea();
chat.setEditable(false);
chat.setLineWrap(true);
chat.setWrapStyleWord(true);
add(new JScrollPane(chat));
}
public synchronized void updateChat(String msg) {
chat.append(“\n” + msg);
chat.setCaretPosition(chat.getText().length());
}
}
=========================================
Setelah itu kita buat class ChatRoom.java
=========================================
package Chat;
import User.UserDisplay;
import javax.swing.JFrame;
import javax.swing.JSplitPane;
public class ChatRoom extends JFrame {
private ChatDisplay chatDisplay;
protected UserDisplay userDisplay;
public ChatRoom() {
super(“by jogjavasia.com”);
chatDisplay=new ChatDisplay();
userDisplay=new UserDisplay();
JSplitPane splitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true);
splitPane.setLeftComponent(userDisplay);
splitPane.setRightComponent(chatDisplay);
splitPane.setDividerSize(3);
add(splitPane);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void updateChat(String msg) {
chatDisplay.updateChat(msg);
}
public void setUserList(String userlist) {
userDisplay.setUserList(userlist);
}
}
Tutorial JavaSE, JavaME, JavaEE, Android, Netbeans, Eclipse, Mysql Bahasa Indonesia
PaintComponent Membuat Form Berwarna Gradient
Awal belajar Java di Netbeans hal pertama yang saya tanyakan adalah
gimana caranya supaya membuat Panel yang standar NetBeans cuman bisanya
satu warna doang menjadi lebih berwarna (yaaa.... seperti ada efek
gradasi warna dari 2 warna yag berbeda).
Pengen tau, cari tau, sudah tau, akhirnya berbagi tau.... hehe
Kira-kira seperti ini...
>> Kodingannya kira-kira seperti ini... (Saya buat dalam Package "komponen")
// Panel.java
package komponen;
// PanelDao.java
// PanelImpl.java
>> cara menggunakannya tinggal drag n drop Panel.java ke Frame yang akan kita buat..
Penampakannya...
Pengen tau, cari tau, sudah tau, akhirnya berbagi tau.... hehe
Kira-kira seperti ini...
>> Kodingannya kira-kira seperti ini... (Saya buat dalam Package "komponen")
// Panel.java
package komponen;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.GeneralPath;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
/**
*
* @author Jie
*/
public class Panel extends JPanel {
private static final long serialVersionUID = -1;
private BufferedImage gradientImage;
private Color white = Color.WHITE;
private Color cyan = Color.CYAN;
/**
* membuat panel white cyan
*/
public Panel() {
super();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (isOpaque()) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
setUpGradient();
g2.drawImage(gradientImage, 0, 0, getWidth(), getHeight(), null);
int width = getWidth();
int height = getHeight() * 5 / 100;
Color light = new Color(1F, 1F, 1F, 0.5F);
Color dark = new Color(1F, 1F, 1F, 0.0F);
GradientPaint paint = new GradientPaint(0, 0, light, 0, height, dark);
GeneralPath path = new GeneralPath();
path.moveTo(0, 0);
path.lineTo(0, height);
path.curveTo(0, height, width / 2, height / 2, width, height);
path.lineTo(width, 0);
path.closePath();
g2.setPaint(paint);
g2.fill(path);
paint = new GradientPaint(0, getHeight(), light, 0, getHeight() - height, dark);
path = new GeneralPath();
path.moveTo(0, getHeight());
path.lineTo(0, getHeight() - height);
path.curveTo(0, getHeight() - height, width / 2, getHeight() - height / 2, width, getHeight() - height);
path.lineTo(width, getHeight());
path.closePath();
g2.setPaint(paint);
g2.fill(path);
g2.dispose();
}
}
/**
* membuat gambar background gradient
*/
private void setUpGradient() {
gradientImage = new BufferedImage(1, getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = (Graphics2D) gradientImage.getGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint paint = new GradientPaint(0, 0, white, 0, getHeight(), cyan);
g2.setPaint(paint);
g2.fillRect(0, 0, 1, getHeight());
g2.dispose();
}
}
// PanelDao.java
package komponen;
/**
*
* @author Jie
*/
public interface PanelDao {
public static final int BACKGROUND_IMAGE_CENTER_BOTTOM = 0;
public static final int BACKGROUND_IMAGE_CENTER_MIDDLE = 1;
public static final int BACKGROUND_IMAGE_CENTER_TOP = 2;
public static final int BACKGROUND_IMAGE_LEFT_BOTTOM = 3;
public static final int BACKGROUND_IMAGE_LEFT_MIDDLE = 4;
public static final int BACKGROUND_IMAGE_LEFT_TOP = 5;
public static final int BACKGROUND_IMAGE_RIGHT_BOTTOM = 6;
public static final int BACKGROUND_IMAGE_RIGHT_MIDDLE = 7;
public static final int BACKGROUND_IMAGE_RIGHT_TOP = 8;
public static final int BACKGROUND_IMAGE_STRECT = 9;
public static final int BACKGROUND_IMAGE_TILED = 10;
}
// PanelImpl.java
package komponen;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Paint;
import javax.swing.Icon;
import javax.swing.JPanel;
/**
*
* @author Jie
*/
public class PanelImpl extends JPanel implements PanelDao{
private static final long serialVersionUID = 1L;
private Icon backgroundImage;
private int backgroundImageType;
private Paint backgroundPaint;
private boolean opaqueGradient;
private boolean opaqueImage;
private Image gambar;
public PanelImpl() {
//compiled code
throw new RuntimeException("Compiled Code");
}
public Icon getBackgroundImage() {
//compiled code
throw new RuntimeException("Compiled Code");
}
public int getBackgroundImageType() {
//compiled code
throw new RuntimeException("Compiled Code");
}
public Paint getBackgroundPaint() {
//compiled code
throw new RuntimeException("Compiled Code");
}
public boolean isOpaqueGradient() {
//compiled code
throw new RuntimeException("Compiled Code");
}
public boolean isOpaqueImage() {
//compiled code
throw new RuntimeException("Compiled Code");
}
protected void paintComponent(Graphics g) {
//compiled code
throw new RuntimeException("Compiled Code");
}
public void setBackgroundImage(Icon backgroundImage) throws IllegalArgumentException {
//compiled code
throw new RuntimeException("Compiled Code");
}
public void setBackgroundImageType(int backgroundImageType) throws IllegalArgumentException {
//compiled code
throw new RuntimeException("Compiled Code");
}
public void setBackgroundPaint(Paint backgroundPaint) {
//compiled code
throw new RuntimeException("Compiled Code");
}
public void setOpaqueGradient(boolean opaqueGradient) {
//compiled code
throw new RuntimeException("Compiled Code");
}
public void setOpaqueImage(boolean opaqueImage) {
//compiled code
throw new RuntimeException("Compiled Code");
}
}
>> cara menggunakannya tinggal drag n drop Panel.java ke Frame yang akan kita buat..
Penggunaan dan Perbedaan Modifier Pada Java
Penggunaan modifier berfungsi untuk melakukan enkapsulasi (membungkus
data) pada objeck. Dengan menggunakan modifier kita dapat menentukan
siapa saja yang boleh menggunakan atau mengakses member dari suatu
objek.
Ada empat macam modifier yang dikenal oleh Java, yaitu private, protected, public dan tanpa modifier.
Class Modifier
Bentuk penggunaan modifier pada class:
Contoh penggunaan:
Bentuk penggunaan method modifier:
Contoh penggunaan:
Ada empat macam modifier yang dikenal oleh Java, yaitu private, protected, public dan tanpa modifier.
Class Modifier
Bentuk penggunaan modifier pada class:
modifier class NamaClass{ … … }
Modifier | Keterangan |
(default) | Class visible atau dapat digunakan hanya pada package yang sama |
public | Class visible terhadap semua package yang berbeda – beda |
final | Class tidak dapat diturunkan lagi / extends |
public class Manusia{ .... .... }Method Modifier
Bentuk penggunaan method modifier:
modifier tipe-data namaMethod(parameter){ … … }Berikut ini adalah daftar modifier yang dapat digunakan pada method.
Modifier | Keterangan |
(default) | Method visible atau dapat digunakan hanya pada package yang sama |
public | Method visible pada semua package |
private | Method visible hanya di dalam class itu sendiri |
protected | Method visible didalam package dan sub classnya |
static | Lihat sub bab sebelumnya |
final | Method tidak dapat diubah / dioverride pada subclass (dibahas pada bab selanjutnya) |
abstract | Method harus dioverride / didefinisikan pada subclassnya (dibahas pada bab selanjutnya) |
public class Manusia{ private String nama; private String jenkel; public void setNama(String nama){ this.nama=nama; } public void setJenkel(String jenkel){ this.jenkel=jenkel; } public void cetak(){ System.out.println("Nama : "+nama); System.out.println("Jenis Kelamin : "+jenkel); } } public class DemoManusia{ public static void main(String args[]){ Manusia m = new Manusia(); m.setNama("Zamzam"); m.setJenkel("Laki-laki"); m.cetak(); } }
Sistem Informasi Rental Kendaraan Bermotor dengan Java
berikut ini saya sajikan design sistem informasi rental kendaraan bermotor yang dibuat dengan java netbeans dan database mysql. anda bisa meniru tampilan design berikut ini jika anda hendak membuat sistem informasi rental kendaraan bermotor atau sejenisnya
semoga saja tampilan design dibawah ini bisa menginspirasi anda untuk merancang sebuah sistem informasi yang anda butuhkan
CONTOH TAMPILAN |
Tutorial Lengkap Cara Menginstal Java Netbeans Di Linux
Setelah kita mencoba untuk melakukan instalasi java di windows, sekarang kita akan mencoba untuk melakukan instalasi di sistem operasi Linux. Cara ini berlaku untuk semua distro atau distribusi linux yang ada.
Tidak sedikit pengguna yang kesulitan untuk melakukan instalasi java di linux, selain masih kurangnya pengalaman dalam menggunakan linux, instalasi java di linux juga tidak terlalu bersahabat, berbeda dengan instalasi di windows yang di manjakan dengan user interface secara grafis. Namun semua itu tetap tidak bisa di jadikan alasan, kita harus mencoba hingga berhasil .
Silahkan anda download di situs oracle jangan lupa untuk memilih versi Linux. Setelah berhasil di download, silahkan ikuti cara-cara di bawah ini :
Demikianlah tulisan singkat mengenai instalasi java di sistem operasi linux, yang masih sering di keluhkan oleh para pemula saat melakukan instalasi Java. Semoga bermanfaat dan tidak menyerah dalam belajar pemrograman Java. Kita bertemu di edisi mendatang. Selamat mencoba!
Tidak sedikit pengguna yang kesulitan untuk melakukan instalasi java di linux, selain masih kurangnya pengalaman dalam menggunakan linux, instalasi java di linux juga tidak terlalu bersahabat, berbeda dengan instalasi di windows yang di manjakan dengan user interface secara grafis. Namun semua itu tetap tidak bisa di jadikan alasan, kita harus mencoba hingga berhasil .
Silahkan anda download di situs oracle jangan lupa untuk memilih versi Linux. Setelah berhasil di download, silahkan ikuti cara-cara di bawah ini :
- simpan program
java yang telah di download di directory home dari user yang ingin
menginstall java, disini saya memakai user yang bernama rdp, jadi
directory home-nya seperti ini /home/rdp/ .
- buka console atau terminal untuk mengeksekusi program biner yang telah di download. Ketik command berikut pada layar console : ./jdk-6u10-linux-i586.bin. Sesuaikan versi Java yang anda download. Maka dilayar console akan seperti gambar di bawah ini
- setelah kita mengeksekusi, maka akan tampil license dari java. Tekan enter terus, jika ingin membaca lengkap license, jika tidak anda bisa menekan tombol q. Tampilan gambarnya akan seperti di bawah ini :
- setelah anda membaca license, maka program biner tersebut akan diekstrak ke dalam directory /home/rdp/. Tampilan gambarnya seperti di bawah ini
- setelah selesai mengekstrak, maka tampilan dari layar console akan seperti gambar di bawah ini :
- saatnya kita mengeset PATH, agar program-program biner Java dapat dieksekusi oleh user rdp. Buka text editor
yang ada di versi Linux yang anda pakai, semisal : vim, kwrite, kate,
pico, joe, mc. Setelah anda buka text editor, ketik command seperti ini
: export PATH=$PATH:/home/rdp/jdk1.6.0_10/bin
sesuaikan versi Java yang anda pakai. Tampilan gambarnya seperti gambar berikut
- logout atau restart agar seting PATH yang kita lakukan dapat berfungsi
- setelah melakukan logout saatnya kita mengetest, apakah PATH yang kita setting benar. Buka console atau terminal, kemudian ketik command : javac –version . Jika seting PATH benar, maka akan memberikan output versi Java yang anda pakai.
Demikianlah tulisan singkat mengenai instalasi java di sistem operasi linux, yang masih sering di keluhkan oleh para pemula saat melakukan instalasi Java. Semoga bermanfaat dan tidak menyerah dalam belajar pemrograman Java. Kita bertemu di edisi mendatang. Selamat mencoba!
Membatasi Jumlah Input Karakter Pada JTextField
JTextField yang disediakan oleh Java umumnya belum memiliki
pembatasan jumlah karakter pada JTextField, hal ini dapat menyebabkan
tidak sinkonnya apabila kita melakukan pembacaan data dari Database yang
memiliki jumlah karakter. Oleh sebab itu untuk menghindari terjadi
exception pada saat penyimpanan pada database maka kita sebaiknya
melakukan pembatasan pada JTextField yang digunakan sesuai dengan
panjang karakter dari field yang ada di database.
pembahasan kali ini adalah bagaimana kita membuat JTextField yang kita gunakan itu bisa memiliki jumlah karakter sehingga user atau pengguna hanya bisa memasukkan String yang memiliki karakter maksimum sesuai yang telah kita sediakan.
Pertama kita buat terlebih dahulu satu class JTextFieldLimit yang diextendkan dari Plain Document, dan source codenya seperti berikut ini :
pembahasan kali ini adalah bagaimana kita membuat JTextField yang kita gunakan itu bisa memiliki jumlah karakter sehingga user atau pengguna hanya bisa memasukkan String yang memiliki karakter maksimum sesuai yang telah kita sediakan.
Pertama kita buat terlebih dahulu satu class JTextFieldLimit yang diextendkan dari Plain Document, dan source codenya seperti berikut ini :
import javax.swing.text.*; public class JTextFieldLimit extends PlainDocument { private int limit; // Opsi untuk merubah ke Uppercase private boolean toUppercase = false; JTextFieldLimit(int limit) { super(); this.limit = limit; } JTextFieldLimit(int limit, boolean upper) { super(); this.limit = limit; toUppercase = upper; } public void insertString (int offset, String str, AttributeSet attr) throws BadLocationException { if (str == null) return; if ((getLength() + str.length()) <= limit) { if (toUppercase) str = str.toUpperCase(); super.insertString(offset, str, attr); } } }Setelah class tersebut dibuat, selanjutnya anda tinggal menggunakannya di class-class yang diperlukan, berikut contoh penggunaannya :
import java.awt.*; import javax.swing.*; public class Tester extends JApplet{ JTextField textfield1; JLabel label1; public void init() { getContentPane().setLayout(new FlowLayout()); // label1 = new JLabel("Maksimum 10 Karakter"); textfield1 = new JTextField(15); getContentPane().add(label1); getContentPane().add(textfield1); textfield1.setDocument (new JTextFieldLimit(10)); } }
Membuat Enkripsi Untuk Pengamanan Data Di Java Netbeans
didalam membuat suatu program yang berisi data data ada kalanya si
pembuat memiliki hak untuk menjaga keamanan dan keaslian data yang ada.
ada beberapa cara salah satunya dengan enkripsi data. karena dengan
menggunakan enkripsi, data bisa dimanipulasi menjadi kumpulan kata yang
sulit untuk diartikan oleh user lain.nah kali ini yang akan dibahas
didalam blog ini yaitu tentang ENKRIPSI DATA didalam netbeans.
ini salah satu contoh sederhana, mungkin TERAMAT sangat SEDERHANA :D
didalam button submit diletakkan coding ini :
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
char[] kr ={'0','1','2','3','4','5','6','7','8','9',' ','.','□',+
'a','b','c','d','e','f','g','h','i','j','k','l','m',+
'n','o','p','q','r','s','t','u','v','w','x','y','z'};
String bantu1 = "";
//enkripsi
char[] cArray1 =(text.getText()).toCharArray();
for (char c1 : cArray1){
for(int i=0; i<=38; i++){
if(c1 == kr[i]){
i = i+(Integer.parseInt(geser.getText()));
if(i>=39){
i = i-39;
}
c1 = kr[i];
bantu1 = bantu1 + c1;
}
}
}
hasil.setText(bantu1);
}
ini yang sebagian dari tugas saya juga :D
selamat mencoba :)
untuk tampilan yang lebih menarik lainnya bisa diatur menurut kreatifitas masing masing :) Kirimkan Ini lewat Email BlogThis! Berbagi ke Twitter
ini salah satu contoh sederhana, mungkin TERAMAT sangat SEDERHANA :D
didalam button submit diletakkan coding ini :
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
char[] kr ={'0','1','2','3','4','5','6','7','8','9',' ','.','□',+
'a','b','c','d','e','f','g','h','i','j','k','l','m',+
'n','o','p','q','r','s','t','u','v','w','x','y','z'};
String bantu1 = "";
//enkripsi
char[] cArray1 =(text.getText()).toCharArray();
for (char c1 : cArray1){
for(int i=0; i<=38; i++){
if(c1 == kr[i]){
i = i+(Integer.parseInt(geser.getText()));
if(i>=39){
i = i-39;
}
c1 = kr[i];
bantu1 = bantu1 + c1;
}
}
}
hasil.setText(bantu1);
}
silahkan dicoba :)
adapula yang tentang Dekripsi, dekripsi sendiri merupakan
suatu kebalikan dari enkripsi. atau sebuah program yang menjalankan atau
mengembalikan kembali nilai yang telah diubah ke dalam enkripsi tadi :
masukkan coding ini kedalam submit yang ke-2 :
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
char[] kr ={'0','1','2','3','4','5','6','7','8','9',' ','.',+
'a','b','c','d','e','f','g','h','i','j','k','l','m',+
'n','o','p','q','r','s','t','u','v','w','x','y','z'};
String bantu2 = "";
//enkripsi
char[] cArray1 =(hasil.getText()).toCharArray();
for (char c1 : cArray1){
for(int i=0; i<=37; i++){
if(c1 == kr[i]){
i = i-(Integer.parseInt(geser.getText()));
if(i<=-1){
i = i+38;
}
c1 = kr[i];
bantu2 = bantu2 + c1;
}
}
}
hasil2.setText(bantu2);
}
hasilnya akan seperti ini :)
selamat mencoba :)
untuk tampilan yang lebih menarik lainnya bisa diatur menurut kreatifitas masing masing :) Kirimkan Ini lewat Email BlogThis! Berbagi ke Twitter
Membuat Form Yang Transparan di Java Netbeans
Pastinya sangat menarik jika kita bisa membuat form menjadi transparan. form kita terlihat lebih elegant dan sangat bergaya. bagamana caranya. simak tutorial yang berhasil saya dapatkan di google. namun belum begitu saya pelajari. hehehe. saya posting disini dulu biar gampang nyarinya kalau kalau udah punya waktu untuk berexpertimen
Window with uniform translucency : You can create window with uniform translucency where each pixel has the same translucency (or alpha) value.
Window with per-pixel translucency : You can create window where each pixel has its own alpha value. Make a part of the window translucent.
Window with any shape object : You can create windows with a certain shape like circle, oval etc.
How to Implement Uniform Translucency
Windows with uniform translucency have the same translucency for each pixel.
You can create uniform translucency by invoking the setOpacity(float) method
in the Window class. The float argument passed to this method should be between
0 and 1. It represents the translucency of the window. The smaller the number,
the more transparent the window.
The following example creates a window that is 55% opaque (45% translucent). If the underlying platform does not support translucent windows, the example exits.
Java 7 allows you to create Window of various shapes. You can create circle, triangle, elliptic windows or more complex shape. You can create a shaped window by invoking the setShape(Shape) method in the Window class. The Shape passed to the method determines how the window is clipped.The following example creates an oval-shaped window. If the underlying platform does not support shaped windows, the example exits.
Purpose
This tutorial demonstrates usage of Translucent and Shaped Windows in Java Swing applications.Time to Complete
Approximately 30 minutes.Overview
As of the Java SE 6 update 10 (6u10) release, you can add translucent and shaped windows to your Swing applications. This functionality is part of the public AWT package in JDK 7. You can create windows of three forms-Window with uniform translucency : You can create window with uniform translucency where each pixel has the same translucency (or alpha) value.
Window with per-pixel translucency : You can create window where each pixel has its own alpha value. Make a part of the window translucent.
Window with any shape object : You can create windows with a certain shape like circle, oval etc.
Software and Hardware Requirements
The following is a list of software requirements:Prerequisites
Before starting this tutorial, you should have the software installed as listed under Software Requirements.
How to Implement Uniform Translucency
Windows with uniform translucency have the same translucency for each pixel.
You can create uniform translucency by invoking the setOpacity(float) method
in the Window class. The float argument passed to this method should be between
0 and 1. It represents the translucency of the window. The smaller the number,
the more transparent the window.The following example creates a window that is 55% opaque (45% translucent). If the underlying platform does not support translucent windows, the example exits.
1. | Create a New Project. Select File > New
Project. |
---|---|
2. | Select Java from the Categories
column and Java Application from the Projects
column and then click Next. |
3. | Perform the following steps. a. Name the project TranslucentWindow. b. Uncheck the Create Main Class check box. c. Click Finish. |
4. | Right-click TranslucentWindow Project and select New >
JFrame Form . |
5. | Name the JFrame TranslucentWindowDemo , package name demo,
and then click Finish. |
6. | Perform the following steps : a. Right-click TranslucentWindowDemo.java and select Open . b. Click Source tab. |
7. | Add the following import statements to the java class,
TranslucentWindow.java
import java.awt.*; import javax.swing.*; import java.awt.event.*; import static java.awt.GraphicsDevice.WindowTranslucency.*; |
8. | Write the following lines
of code in the main() method
to determine whether translucency is supported by your system’s
graphic device. GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gd = ge.getDefaultScreenDevice(); Not all platforms support these capabilities. An UnsupportedOperationException exception is thrown when a platform that does not support these features. Hence it is best practice to first check that the platform supports the capability. The GraphicsDevice class provides isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency) method that you can use for this purpose. You can pass one of three enum values, defined in GraphicsDevice.WindowTranslucency, namely: PERPIXEL_TRANSLUCENT, TRANSLUCENT, PERPIXEL_TRANSPARENT. |
9. | Add the below code to the main
method to exit the program if translucency is not supported by the graphic
device. if (!gd.isWindowTranslucencySupported(TRANSLUCENT)) { System.err.println("Translucency is not supported"); System.exit(0); } |
10. | Perform the following steps
to the constructor of the class,
TranslucentWindowDemo()
. 1. Delete the below NetBeans generated line of code. initComponents(); 2. Add the following lines to set the properties of the frame. super("TranslucentWindowDemo"); setLayout(new GridBagLayout()); setSize(300,200); setLocationRelativeTo(null); setUndecorated(true); getContentPane().setBackground(Color.blue); |
11. | Add the below code to the constructor to create a Button, Close and
add the button to the frame. JButton btnClose = new JButton("Close"); add(btnClose); |
12. | To the constructor, add event handling code to the Close button. ActionListener al; al = new ActionListener() { public void actionPerformed(ActionEvent ae) { System.exit(0); } }; btnClose.addActionListener (al); The Close button responds to click event and closes the Frame . |
13. | Perform the following changes to the run()
method . 1. Delete the below NetBeans generated line of code. new TranslucentWindowDemo().setVisible(true); 2. Next add the below lines of code. TranslucentWindowDemo tw = new TranslucentWindowDemo(); tw.setOpacity(0.55f); tw.setVisible(true); The above code performs the following : 1. Starts a thread to create the GUI. 2. Sets the transluency of the window to 55% . 3. Displays the window . |
14. | In the Projects pane, right-click TranslucentWindowDemo.java
and choose Run File. |
15. | The output with 55% translucent window will be as below. You
can click the Close button to close the Window. Note that the button is also affected by the uniform translucency. Setting the opacity affects the whole window, including any components that the window contains. You can test the application with different opacity values . |
How to implement Shaped Windows
A shaped window is an undecorated window whose appearance conforms to a specific shape . Pixels outside of the shape are transparent and reveal the background.
Java 7 allows you to create Window of various shapes. You can create circle, triangle, elliptic windows or more complex shape. You can create a shaped window by invoking the setShape(Shape) method in the Window class. The Shape passed to the method determines how the window is clipped.The following example creates an oval-shaped window. If the underlying platform does not support shaped windows, the example exits.
1. | Right-click TranslucentWindow Project and select New > JFrame
Form . |
---|---|
2. | Name the class ShapedWindowDemo, package name demo
and then click Finish. |
3. | Perform the following steps: 1. Right click ShapedWindowsDemo.java and select Open. 2. Click Source tab. |
4. | Add the following import statements to the java class,
ShapedWindowDemo.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.Ellipse2D; import static java.awt.GraphicsDevice.WindowTranslucency.*; |
5. | Add the following lines of code in the main
method to determine whether translucency is supported by your
system’s graphic device. GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gd = ge.getDefaultScreenDevice(); final boolean isTranslucencySupported= gd.isWindowTranslucencySupported(PERPIXEL_TRANSPARENT); |
6. | Add the below code to the main
method to exit the program if translucency is not supported by
the graphic device. if (!gd.isWindowTranslucencySupported(PERPIXEL_TRANSPARENT)) { System.err.println("Shaped windows are not supported"); System.exit(0); } |
7. | Perform the following steps
to the constructor of the class,
ShapedWindowDemo()
. 1. Delete the below NetBeans generated line of code. initComponents(); 2. Add the following lines of code . super("ShapedWindow"); setLayout(new GridBagLayout()); addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { setShape(new Ellipse2D.Double(0, 0, getWidth(), getHeight())); } }); setUndecorated(true); setSize(300, 200); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); add(new JButton("I am a Button")); |
8. | In the Projects pane, right-click ShapedWindowDemo.java
and choose Run File. The output will be as below |
9. | Make the following changes to the run() method. 1. Delete the below line of code. new ShapedWindowDemo().setVisible(true); 2. Add the following lines of code . ShapedWindowDemo sw = new ShapedWindowDemo(); sw.setOpacity(0.7f); sw.setVisible(true); The above code is used to set the Transparency of the window to 70%. |
10. | In the Projects pane, right-click ShapedWindowDemo.java
and choose Run File. The output with 70% translucent shaped window will be as below. |