Cara membuat Tembus dan Berbentuk Windows Jawa?

Ikhtisar: Pada artikel ini kita akan membahas tentang transparansi dan jendela berbentuk berbeda di Jawa. Dalam java 7 ayunan mendukung fitur ini dan membuat komponen ayunan UI lebih fleksibel dan user friendly.

Pengantar: Dalam beberapa aplikasi, jendela transparan merupakan persyaratan untuk mendukung fungsionalitas. Sekarang di Jawa, transparansi dapat diimplementasikan. Sebuah jendela tembus dibuat dengan mengubah opacity dengan menerapkan metode yang disebut setOpacity pada komponen JFrame. Tetapi kita harus memahami bahwa jendela yang tembus hanya mungkin jika sistem operasi yang mendasari mendukungnya. Dan kita juga perlu memastikan bahwa jendela tidak dihiasi. Untuk membuat jendela undecorated, Anda perlu menghubungi setUndecorated (benar) metode. Beberapa waktu itu juga perlu untuk mengubah bentuk dari jendela UI. Untuk menerapkannya, kita perlu memanggil metode setShape dalam metode componentResized. Ini akan menghitung ulang bentuk ketika jendela diubah ukurannya.

Kembali tanah: Dalam java UI, dukungan untuk tembus dan berbentuk jendela adalah permintaan waktu yang lama untuk swing / AWT komponen. Untuk akses pembangunan asli sifat ini tersedia dari waktu yang lama kembali. Tapi itu tidak dapat diakses oleh komponen inti java. Dalam Java6 seterusnya, dukungan untuk tembus dan berbentuk jendela tersedia. Bahkan per tembus tingkat piksel juga mendukung dalam Java7.

Jenis dukungan untuk tembus dan transparansi: Jawa 7 mendukung tiga jenis berikut dukungan.

Tembus: Dalam fitur ini jendela dapat memiliki warna yang berbeda namun dengan tingkat yang sama opacity. Jadi nilai alpha sama untuk semua piksel. Efek ini cocok untuk memudar dari jendela dan kemudian secara bertahap menurun dan meningkatkan nilai alpha.

PERPIXEL_TRANSLUCENT: Properti ini mendukung nilai alpha yang berbeda dalam jendela itu sendiri. Ini digunakan untuk memudar wilayah yang dipilih dari jendela.

PERPIXEL_TRANSPARENT: Properti ini mendukung berbagai bentuk jendela daripada persegi panjang tradisional. Jika per transparansi pixel ini didukung maka berbagai bentuk seperti lingkaran, segitiga dapat dibuat.

Sebelum kita menggunakan salah satu sifat di atas kita perlu menguji support di bawah sistem operasi berbohong. Tes ini dapat dilakukan dengan menggunakan metode isWindowTranslucencySupported milik kelas java.awt.GraphicsDevice. Dibutuhkan jenis transparansi sebagai input dan mengembalikan nilai true / false untuk menunjukkan dukungan.

Mari kita periksa contoh kode untuk mengimplementasikan fitur tembus. Dalam contoh ini kita telah menciptakan sebuah jendela tembus persegi panjang pada area teks. Pertama kita telah menonaktifkan mode dekorasi untuk mendapatkan efek transparansi. Kemudian kami telah diperiksa jika sistem operasi yang mendasari mendukung atau tidak. Jika didukung efeknya terlihat pada bingkai jendela.

Listing1: Contoh menunjukkan Translucency dari jendela JFrame

mengimpor java.awt.Color;

mengimpor java.awt.GraphicsDevice;

mengimpor java.awt.GraphicsEnvironment;

mengimpor java.awt.GridBagLayout;

mengimpor java.awt.event.ComponentAdapter;

mengimpor java.awt.event.ComponentEvent;

mengimpor java.awt.geom.Rectangle2D;

mengimpor javax.swing.JFrame;

mengimpor javax.swing.JTextArea;

mengimpor javax.swing.SwingUtilities;

publik kelas TransRecFrame meluas JFrame {

/**

* Membuat bingkai persegi panjang transparan dengan 85% transparansi

*/

publik TransRecFrame() {

super(“Bingkai Rectangular tembus”);

//Mengatur tata letak

setLayout(baru GridBagLayout());

//Membuat text area

terakhir JTextArea txtArea = baru JTextArea(5, 50);

txtArea.setBackground(Warna.CYAN);

menambahkan(txtArea);

//Panggilan untuk menonaktifkan dekorasi

setUndecorated(benar);

 

//Hubungi setShape untuk mengubah ukuran bentuk saat widnow diubah ukurannya

addComponentListener(baru ComponentAdapter() {

@ Override

publik membatalkan componentResized(ComponentEvent dan) {

setShape(baru Rectangle2D.Double(0, 0, getWidth(), getHeight()));

}

});

//Membuat jendela 85% jelas

setOpacity(0.85f);

//Set parameter lainnya

setLocationRelativeTo(nol);

setSize(200, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(benar);

}

publik statis membatalkan utama(Senar[] args) {

//Menciptakan lingkungan grafis

Pemuda Venture GraphicsEnvironment = GraphicsEnvironment

.getLocalGraphicsEnvironment();

//Periksa apakah OS mendukung Tembus

jika (genv.getDefaultScreenDevice().isWindowTranslucencySupported(

GraphicsDevice.WindowTranslucency.Tembus)) {

System.out.println(“OS mendukung tembus”);

baru TransRecFrame();

}

}

}

Fitur untuk mendukung tembus dan bentuk: Dalam Java7 ada terutama tiga fitur yang tersedia untuk mendukung tembus dan bentuk jendela.

  • Penuh jendela tembus: Dalam pendekatan ini penuh jendela yang tembus.
  • Per pixel tembus: Dalam pendekatan ini bagian dari jendela yang tembus
  • Jendela berbentuk: Membuat jendela berbentuk berbeda seperti ovale, lingkaran, persegi dll.

Per pixel tembus:

Kita telah melihat bagaimana membuat jendela tembus lengkap pada contoh sebelumnya. Sekarang kita akan membahas bagian kedua dari membuat satu set piksel tembus dengan menggunakan warna latar belakang mereka. Ada beberapa keterbatasan untuk menerapkan skenario ini. Jendela tidak boleh layar penuh dan sistem harus mendukung tembus tingkat piksel. Sisa dari prosedur ini adalah serupa dengan contoh di atas.

Pada contoh berikut kita akan melihat bagaimana tembus tingkat piksel diatur dalam bingkai.

Listing2: Contoh menunjukkan pixel level support tembus.

mengimpor javax.swing.*;

mengimpor java.awt. *;

mengimpor java.awt.event.ActionEvent;

mengimpor java.awt.event.ActionListener;

publik kelas PixelTranslucency meluas JFrame {

publik PixelTranslucency() {

super(“Set pixel tingkat tembus”);

//Mengatur ukuran JFrame

setSize(250, 250);

//Mengatur lay out

getContentPane().setLayout(baru GridLayout(6, 6));

//Panggilan untuk pengaturan pixel

untuk(int i = 0; i < 16; i ){

menambahkan(baru Pixel Panel(255 – i * 12));

}

//Set latar belakang dan properti lainnya

setBackground(baru Warna(0, 0, 0, 0));

setLocationRelativeTo(nol);

setVisible(benar);

}

publik statis membatalkan utama(Senar[] args) {

Pemuda Venture GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Periksa apakah jendela mendukung tembus

jika (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT)) {

Sistem.di luar.println(“OS mendukung tembus”);

baru PixelTranslucency();

}

} pribadi kelas Pixel Panel meluas JPanel {

pribadi Pixel Panel(int pixl) {

super();

setBackground(baru Warna(0, 0, 255, pixl));

}

}

}

Membentuk jendela:

Sekarang kita akan membahas tentang fitur penting lain yang didukung oleh jendela berbentuk Java7.The mendukung semua jenis bentuk apapun menjadi kebutuhan pengguna. Fitur ini membantu Anda untuk membuat bentuk apapun seperti lingkaran, segi tiga, poligon atau bentuk kompleks mungkin. Metode setShape dari jendela kelas yang tersedia untuk pengaturan properti. Tapi sekali lagi kita harus ingat bahwa modus layar penuh seharusnya tidak diperbolehkan dan sistem operasi mendukung tembus.

Contoh berikut menunjukkan penggunaan berbentuk window.

Listing3: Kode contoh menunjukkan penggunaan berbentuk window.

mengimpor javax.swing.*;

mengimpor java.awt. *;

mengimpor java.awt.geom.Ellipse2D;

mengimpor java.awt.geom.GeneralPath;

publik kelas JavaShapedWindow meluas JFrame {

publik JavaShapedWindow() {

super(“Set berbentuk Jendela”);

//Set polos OFF untuk mendapatkan efek

setUndecorated(benar);

//Mengatur ukuran

setSize(baru Dimensi(250, 250));

//Mengatur properti polygon

Polygon poligon = baru Poligon();

polygon.addPoint(0, 100);

polygon.addPoint(50, 0);

polygon.addPoint(100, 100);

//Mengatur nilai dari bentuk

Ellipse2D.Double newCircle = baru Ellipse2D.Double(0, 50, 1.0*100, 1.0*100);

//Mengatur properti jalan umum

GeneralPath gpath = baru GeneralPath();

gpath.append(poligon, benar);

gpath.append(newCircle, benar);

//Mengatur jalur

setShape(gpath);

//Mengatur tata letak kotak

getContentPane().setLayout(baru BoxLayout(getContentPane(), BoxLayout.X_AXIS));

menambahkan(Kotak.createHorizontalGlue());

//Buat label dan mengatur properti

JLabel newlabel = baru JLabel(“Window Berbentuk Jawa”);

newlabel.setForeground(Warna.putih);

menambahkan(newlabel);

menambahkan(Kotak.createHorizontalGlue());

//Mengatur isi panel warna latar belakang

getContentPane().setBackground(Warna.cyan);

//Set lokasi

setLocationRelativeTo(nol);

setVisible(benar);

}

publik statis membatalkan utama(Senar[] args) {

Pemuda Venture GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Periksa dukungan OS untuk properti ini

jika (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {

Sistem.di luar.println(“OS mendukung tembus”);

baru JavaShapedWindow();

}

}

}

Kita juga dapat menerapkan kombinasi dua fitur seperti tembus dan berbentuk jendela. Untuk melaksanakan ini, memanggil metode setOpacity ke frame Anda. Jendela hasil akan menampilkan efek gabungan. Tapi kita harus ingat sistem operasi yang mendasari harus mendukung tembus tingkat piksel dan transparansi tingkat piksel.

Kesimpulan:

Pada artikel ini kita telah membahas beberapa fitur baru dalam tembus java7.The dan fitur jendela berbentuk benar-benar menarik dan membuat java komponen UI lebih fleksibel. Tetapi pada saat yang sama kita harus ingat bahwa sistem operasi yang mendasari harus mendukung semua sifat ini. Jika efeknya tidak akan terlihat. Jadi dalam aplikasi itu sendiri kita memeriksa dukungan OS dan kemudian menerapkan efek. Fitur terbaru dari java memungkinkan pengembang untuk membuat berbagai jenis efek pada sisi UI. Seperti kita semua tahu bahwa tampilan dan nuansa merupakan aspek penting dari setiap aplikasi berbasis UI. Jadi pengembang kini dilengkapi dengan alat untuk membuat UI lebih menyenangkan dan menarik.

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share