Necə Java Translucent və formalı Windows yaratmaq?

Baxış: Bu yazıda Java şəffaflıq və müxtəlif formalı Windows müzakirə edəcək. Java 7 swing bu xüsusiyyət dəstəkləyir və swing UI komponentləri daha çevik və istifadəçi dostu edilməsi.

Giriş: Bəzi tətbiq, şəffaf pəncərə onun funksionallığı dəstək tələb olunur. İndi Java, şəffaflıq həyata keçirilə bilər. A translucent pəncərə JFrame komponenti üzrə setOpacity adlı bir üsulu tətbiq onun qeyri-şəffaflıq değiştirerek tərəfindən yaradılmışdır. Ancaq biz əsas əməliyyat sistemi dəstəkləyir bir translucent pəncərə mümkündür başa düşməlidir ki,. Və biz də pəncərə bəzədilmiş deyil ki, əmin olmaq lazımdır. Bir pəncərə undecorated etmək üçün, Siz setUndecorated zəng etmək lazımdır (doğru) üsul. Bir müddət bu da bir pəncərə UI şəklində dəyişmək üçün tələb olunur. Onun həyata keçirilməsi, biz componentResized üsul ərzində setShape metodu zəng etmək lazımdır. Pəncərə boyutlandırılır zaman hesablayır şəkilləndirəcək.

Geri yer: Java UI, translucency və formalı pəncərə dəstək Swing / AWT komponentləri üçün uzun zaman tələb edilib. Doğma inkişaf erişim üçün bu xüsusiyyətləri geri uzun müddət mövcuddur. Amma bu, əsas java komponentləri üçün əlçatan deyil. Java6 irəli ildə, translucency üçün dəstək və formalı pəncərə mövcuddur. Hətta pixel səviyyədə translucency başına da Java7 dəstəkləyir edir.

Translucency və şəffaflıq dəstək növü: Java 7 dəstək aşağıdakı üç növü dəstəkləyir.

Translucent: Bu xüsusiyyət pəncərə, lakin qeyri-şəffaflıq eyni səviyyədə müxtəlif rəngli ola bilər. Belə ki, alfa değeri bütün piksel üçün eyni. Bu təsir bir pəncərə off ölmək üçün uyğun və sonra tədricən azalır və alfa dəyəri artırır.

PERPIXEL_TRANSLUCENT: Bu əmlak pəncərə özü müxtəlif alfa dəyərlər dəstəkləyir. Bu pəncərə Seçilmiş regionda ölmək üçün istifadə olunur.

PERPIXEL_TRANSPARENT: Bu əmlak ənənəvi düzbucaqlı çox windows müxtəlif formalı dəstəkləyir. Dairə kimi müxtəlif formalı sonra dəstəklənir pixel şəffaflıq başına edin, üçbucağı yaradıla bilər.

Biz yuxarıda xüsusiyyətləri hər hansı bir istifadə etməzdən əvvəl, biz yalan əməliyyat sistemi altında dəstəyi test lazımdır. Test üsulu istifadə edilə bilər java.awt.GraphicsDevice sinfinə aid isWindowTranslucencySupported. Bu giriş kimi şəffaflıq növü edir və dəstəyi göstərir / true false qaytarır.

Bizə translucency xüsusiyyət həyata keçirilməsi üçün örnek kod yoxlamaq edək. Bu misalda biz mətn sahəsində bir düzbucaqlı translucent pəncərə yaradıb. İlk şəffaflıq təsiri almaq üçün bəzək rejimi aradan qoyduq. Əsas əməliyyat sistemi dəstəkləyir və ya əgər biz yoxlamalı. Dəstəkləndiyi halda təsiri çərçivəsində pəncərə görünür.

Listing1: Bir JFrame pəncərə nümunəsi göstərən translucency

idxal java.awt.Color;

idxal java.awt.GraphicsDevice;

idxal java.awt.GraphicsEnvironment;

idxal java.awt.GridBagLayout;

idxal java.awt.event.ComponentAdapter;

idxal java.awt.event.ComponentEvent;

idxal java.awt.geom.Rectangle2D;

idxal javax.swing.JFrame;

idxal javax.swing.JTextArea;

idxal javax.swing.SwingUtilities;

ictimai sinif TransRecFrame genişləndirir JFrame {

/**

* Ilə şəffaf düzbucaqlı çərçivə yarat 85% şəffaflıq

*/

ictimai TransRecFrame() {

super(“Translucent Pry Frame”);

//Layout seçin

setLayout(yeni GridBagLayout());

//Mətn sahəsi yaratmaq

final JTextArea txtArea = yeni JTextArea(5, 50);

txtArea.setBackground(Rəng.Cyan);

əlavə etmək(txtArea);

//Bəzək aradan zəng

setUndecorated(doğru);

 

//Şəklində boyutlandır setShape Zəng zaman widnow boyutlandırılır olunur

addComponentListener(yeni ComponentAdapter() {

@ Rusiyada yüklenme

ictimai ləğv componentResized(ComponentEvent və) {

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

}

});

//Pəncərə olun 85% şəffaf

setOpacity(0.85f);

//Digər parametrləri seçin

setLocationRelativeTo(sıfır);

setSize(200, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(doğru);

}

ictimai statik ləğv əsas(Sim[] args) {

//Qrafik mühit yaratmaq

Gənclər Müəssisəsi GraphicsEnvironment = GraphicsEnvironment

.getLocalGraphicsEnvironment();

//OS dəstəkləyir yoxlayın Translucency

əgər (genv.getDefaultScreenDevice().isWindowTranslucencySupported(

GraphicsDevice.WindowTranslucency.Translucent)) {

System.out.println(“OS translucency dəstəkləyir”);

yeni TransRecFrame();

}

}

}

Translucency və forma dəstək Features: Java7 ildə translucency və bir pəncərə şəklində dəstəkləmək üçün əsasən üç xüsusiyyətləri var.

  • Full pəncərə translucency: Bu yanaşma tam pəncərə translucent edir.
  • Pixel translucency Per: Bu yanaşmada pəncərə bir hissəsi translucent edir
  • Şəklindəki windows: Ovale kimi müxtəlif formalı şüşələr olun, dairə, düzbucaqlı və s..

Pixel translucency Per:

Biz artıq əvvəlki misal tam pəncərə translucent etmək necə görmüşəm. İndi onların fon rəngi istifadə edərək translucent piksel bir sıra edilməsi ikinci hissəsi müzakirə edəcək. Bu ssenari həyata keçirilməsi üçün bəzi məhdudiyyətlər var. Pəncərə tam ekran olmamalıdır və sistem pixel səviyyədə translucency dəstək lazımdır. Proseduru qalan yuxarıda misal benzer.

Aşağıdakı misalda biz pixel səviyyəli translucency çərçivəsində müəyyən edilir necə olacaq.

Listing2: Nümunə göstərən pixel səviyyədə translucency dəstək.

idxal javax.swing.*;

idxal java.awt. *;

idxal java.awt.event.ActionEvent;

idxal java.awt.event.ActionListener;

ictimai sinif PixelTranslucency genişləndirir JFrame {

ictimai PixelTranslucency() {

super(“Pixel səviyyədə translucency göstərilməyib”);

//Ki, JFrame ölçüsü seçin

setSize(250, 250);

//Yerinə qoymaq Set

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

//Pixel qəbulu üçün zəng

uğrunda(int I = 0; mən < 16; i ){

əlavə etmək(yeni Pixel Panel(255 – mən * 12));

}

//Fon və digər xüsusiyyətləri seçin

setBackground(yeni Rəng(0, 0, 0, 0));

setLocationRelativeTo(sıfır);

setVisible(doğru);

}

ictimai statik ləğv əsas(Sim[] args) {

Gənclər Müəssisəsi GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Pəncərə dəstəkləyir yoxlayın translucency

əgər (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT)) {

Sistem.həyata.println(“OS translucency dəstəkləyir”);

yeni PixelTranslucency();

}

} xüsusi sinif Pixel Panel genişləndirir JPanel {

xüsusi Pixel Panel(int pixl) {

super();

setBackground(yeni Rəng(0, 0, 255, pixl));

}

}

}

Şəklindəki Windows:

İndi Java7.The formalı pəncərə tərəfindən dəstəklənən digər bir mühüm xüsusiyyət haqqında müzakirə edəcək istifadəçi tələbinə olmaq nə şekiller bütün növ dəstəkləyir. Bu xüsusiyyət dairəsi kimi hər hansı bir forma yaratmaq üçün kömək edir, üçbucağı, poliqon və ya hər hansı mümkün kompleks forma. Pəncərə dərəcəli setShape metodu əmlak yaradılması üçün mövcud. Ancaq yenə də biz tam ekran rejimi icazə verilməməlidir unutmayın və əməliyyat sistemi translucency dəstəkləyir.

Aşağıdakı misal formalı pəncərə istifadə göstərir.

Listing3: Formalı pəncərə istifadə göstərərək örnek kod.

idxal javax.swing.*;

idxal java.awt. *;

idxal java.awt.geom.Ellipse2D;

idxal java.awt.geom.GeneralPath;

ictimai sinif JavaShapedWindow genişləndirir JFrame {

ictimai JavaShapedWindow() {

super(“Formalı Window Set”);

//Təsir almaq üçün OFF undecorated seçin

setUndecorated(doğru);

//Ölçüsünü təyin

setSize(yeni Ölçü(250, 250));

//Poliqon xassələri seçin

Poligon poliqon = yeni Poliqon();

polygon.addPoint(0, 100);

polygon.addPoint(50, 0);

polygon.addPoint(100, 100);

//Şəklindəki dəyərlər seçin

= NewCircle Ellipse2D.Double yeni Ellipse2D.Double(0, 50, 1.0*100, 1.0*100);

//Ümumi yol xassələri seçin

GeneralPath gpath = yeni GeneralPath();

gpath.append(poliqon, doğru);

gpath.append(newCircle, doğru);

//Yolunu seçin

setShape(gpath);

//Qutusu layout seçin

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

əlavə etmək(Qutu.createHorizontalGlue());

//Etiket və müəyyən xassələri yarat

JLabel newlabel = yeni JLabel(“Java Şəklindəki pəncərə”);

newlabel.setForeground(Rəng.);

əlavə etmək(newlabel);

əlavə etmək(Qutu.createHorizontalGlue());

//Məzmun bölmede fon rəngi seçin

getContentPane().setBackground(Rəng.cyan);

//Yeri göstərilməyib

setLocationRelativeTo(sıfır);

setVisible(doğru);

}

ictimai statik ləğv əsas(Sim[] args) {

Gənclər Müəssisəsi GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Bu əmlak üçün OS dəstək yoxlayın

əgər (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {

Sistem.həyata.println(“OS translucency dəstəkləyir”);

yeni JavaShapedWindow();

}

}

}

Biz də translucency və formalı pəncərə kimi iki xüsusiyyətləri bir yerdə həyata keçirə bilər. Bu həyata keçirilməsi üçün, Sizin çərçivəsində setOpacity metodu zəng. Nəticədə pəncərə birləşmiş təsiri göstərilir. Ancaq biz əsas əməliyyat sistemi pixel səviyyədə translucency və pixel səviyyədə şəffaflıq təmin olunmalıdır unutmayın.

Nəticə:

Bu yazıda java7.The translucency bəzi yeni funksiyalar əhatə və formalı pəncərə xüsusiyyətləri həqiqətən maraqlı və java UI komponentləri daha çevik etmək. Amma eyni zamanda biz əsas əməliyyat sistemi bütün bu xüsusiyyətləri dəstək lazımdır ki, yadda olmalıdır. Əks halda təsiri görünmez. Belə ki, proqram özü biz OS dəstəyi yoxlamaq və daha sonra təsiri həyata. Java son xüsusiyyəti developers UI yan təsir müxtəlif növ yaratmaq imkan verir. Biz bütün baxmaq bilirik və hiss kimi hər hansı bir UI based tətbiqi mühüm aspektidir. Belə ki, geliştirici indi UI daha xoş və cəlbedici etmək üçün alətləri ilə təchiz olunub.

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share