Javada oluşturmak için mi şekilli pencereyi nereden ne yapacaksın ki boş bırak gitsin yapmak.?

Genel bakış: Bu yazıda Java şeffaflık ve farklı şekilli pencereler hakkında tartışacağız. Java 7 salıncak bu özelliği desteklediğini ve salıncak UI bileşenleri daha esnek ve kullanıcı dostu hale.

Giriş: Bazı uygulamada, şeffaf pencere işlevselliğini desteklemek için bir gerekliliktir. Şimdi Java, asetat uygulanabilecek. Bir saydam pencere JFrame bileşeni setOpacity adı verilen bir yöntem uygulayarak kendi donukluk değiştirerek oluşturulur. Ama biz temel işletim sistemi desteklediği takdirde bir saydam pencere mümkün olduğunu anlamak gerekir. Ve biz de pencere dekore olmadığından emin olmak gerekir. Bir pencere bezemesiz yapmak için, Eğer setUndecorated aramak gerekiyor (gerçek) yöntem. Bir süre, aynı zamanda bir pencere UI şeklini değiştirmek için gereklidir. Bunu uygulamak için, Biz componentResized yöntem içinde setShape yöntemini çağırmanız gerekir. Pencere yeniden boyutlandırılır zaman yeniden hesaplamak şekli olacak.

Arka zemin: Java arabiriminde, saydamlık ve şekilli pencere desteği Salıncak / AWT bileşenleri için uzun süre talep oldu. Için yerel kalkınma erişim için bu özellikleri geri uzun zaman kullanılabilir. Ama çekirdek java bileşenlerine açık değildi. Java6 itibaren ise, saydamlık için destek ve şekilli pencere kullanılabilir. Hatta piksel düzeyinde saydamlık başına da Java7 de destekler.

Saydamlık ve şeffaflık için destek türü: Java 7 destek aşağıdaki üç tür destekler.

SAYDAM: Bu özelliği pencerenin ama opaklık aynı düzeyde farklı renklere sahip olabilir. Yani alfa değeri tüm pikseller için aynıdır. Bu etki bir pencere kapalı solmaya için uygundur ve daha sonra yavaş yavaş azalır ve alfa değerini artırır.

PERPIXEL_TRANSLUCENT: Bu özellik pencere kendi içinde farklı alfa değerleri destekler. Bu pencerenin seçilen bölge solmaya kullanılır.

PERPIXEL_TRANSPARENT: Bu özellik geleneksel dikdörtgen yerine pencere farklı şekillerde destekler. Daire gibi farklı şekillerde sonra desteklenen piksel şeffaflık başına ise, üçgen oluşturulabilir.

Biz yukarıdaki özelliklerden herhangi birini kullanmadan önce biz yalan işletim sistemi altında da desteği test etmek gerekir. Test yöntemi kullanılarak yapılabilir java.awt.GraphicsDevice sınıfa ait isWindowTranslucencySupported. Bu girdi olarak şeffaflık türünü alır ve desteği göstermek için doğru / yanlış döndürür.

Bize saydamlık özelliği uygulamak için bir örnek kod kontrol edelim. Bu örnekte, bir metin alanına bir dikdörtgen saydam pencere oluşturduk. Önce şeffaflık sonuca ulaşmak için dekorasyon modu devre dışı bırakmış. Temel işletim sistemi desteklediği ya da değil o zaman kontrol ettirin. Destekleniyorsa etkisi çerçeve penceresinde görünür.

Listing1: Bir JFrame pencerenin örnek gösteren Translucency

ithal java.awt.Color;

ithal java.awt.GraphicsDevice;

ithal java.awt.GraphicsEnvironment;

ithal java.awt.GridBagLayout;

ithal java.awt.event.ComponentAdapter;

ithal java.awt.event.ComponentEvent;

ithal java.awt.geom.Rectangle2D;

ithal javax.swing.JFrame;

ithal javax.swing.JTextArea;

ithal javax.swing.SwingUtilities;

kamu sınıf TransRecFrame uzanır JFrame {

/**

* Ile şeffaf bir dikdörtgen çerçeve oluşturma 85% şeffaflık

*/

kamu TransRecFrame() {

süper(“Şeffaf Dikdörtgen Çerçeve”);

//Düzenini ayarlamak

setLayout(yeni GridBagLayout());

//Bir metin alanı oluşturma

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

txtArea.setBackground(Renk.CYAN);

eklemek(txtArea);

//Dekorasyon devre dışı bırakmak için çağrı

setUndecorated(gerçek);

 

//Şekli yeniden boyutlandırmak için setShape aradığınızda widnow yeniden boyutlandırılır

addComponentListener(yeni ComponentAdapter() {

@ Override

kamu geçersiz componentResized(ComponentEvent ve) {

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

}

});

//Pencere yapmak 85% şeffaf

setOpacity(0.85f);

//Diğer parametreleri ayarlayın

setLocationRelativeTo(sıfır);

setSize(200, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(gerçek);

}

kamu statik geçersiz ana(Dizi[] args) {

//Grafik ortam yaratmak

Gençlik Girişim GraphicsEnvironment = GraphicsEnvironment

.getLocalGraphicsEnvironment();

//OS destekleyip desteklemediğini kontrol edin Saydamlık

eğer (genv.getDefaultScreenDevice().isWindowTranslucencySupported(

GraphicsDevice.WindowTranslucency.SAYDAM)) {

System.out.println(“OS saydamlık destekler”);

yeni TransRecFrame();

}

}

}

Saydamlık ve şekil destekleyecek Özellikler: Java7 yılında saydamlık ve bir pencere şeklini desteklemek için kullanılabilir esas olarak üç özellik vardır.

  • Tam pencere saydamlık: Bu yaklaşımda tam pencere şeffaf.
  • Piksel saydamlık başına: Bu yaklaşımda, pencerenin üyesi şeffaf
  • Şeklinde pencere: Ovale gibi farklı şekilli pencereler olun, daire, dikdörtgen vb.

Piksel saydamlık başına:

Biz zaten önceki örnekte tam bir pencere saydam nasıl gördük. Şimdi kendi arka plan rengini kullanarak saydam piksel bir dizi yapma ikinci bölümünde tartışacağız. Bu senaryoda uygulamak için bazı sınırlamalar vardır. Pencere tam ekran olmamalı ve sistem piksel düzeyinde saydamlık desteklemelidir. Prosedürün geri kalanı, yukarıdaki örneğe benzer.

Aşağıdaki örnekte biz piksel düzeyinde saydamlık bir çerçeve yer almaktadır göreceğiz.

Listing2: Örnek gösteren piksel düzeyinde saydamlık desteği.

ithal javax.swing.*;

ithal java.awt. *;

ithal java.awt.event.ActionEvent;

ithal java.awt.event.ActionListener;

kamu sınıf PixelTranslucency uzanır JFrame {

kamu PixelTranslucency() {

süper(“Piksel düzeyinde saydamlık ayarlama”);

//JFrame boyutu ayarlayın

setSize(250, 250);

//Ortaya koymak Set

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

//Piksel ayarı Çağrısı

için(int i = 0; ben < 16; i ,){

eklemek(yeni Piksel Panel(255 – ben * 12));

}

//Arka plan ve diğer özelliklerini ayarlama

setBackground(yeni Renk(0, 0, 0, 0));

setLocationRelativeTo(sıfır);

setVisible(gerçek);

}

kamu statik geçersiz ana(Dizi[] args) {

Gençlik Girişim GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Pencere destekleyip desteklemediğini kontrol edin saydamlık

eğer (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT)) {

Sistem.dışarı.println(“OS saydamlık destekler”);

yeni PixelTranslucency();

}

} özel sınıf Piksel Panel uzanır JPanel {

özel Piksel Panel(int pixl) {

süper();

setBackground(yeni Renk(0, 0, 255, pixl));

}

}

}

Şekilli, Windows:

Şimdi Java7.The şeklinde pencere tarafından desteklenen bir başka önemli özelliği hakkında tartışacağız kullanıcının ihtiyacı ne olursa olsun şekil her tür destekler. Bu özellik, daire gibi herhangi bir şekil oluşturmak için yardımcı olur, üçgen, çokgen veya olası karmaşık şekli. Pencerenin sınıfının setShape yöntem özelliğini ayarlamak için kullanılabilir. Ama yine tam ekran modunda izin gerektiğini hatırlamak zorunda ve işletim sistemi saydamlık destekler.

Aşağıdaki örnek, şekilli bir pencere bölgesinin kullanımını gösterir.

Listing3: Şeklindeki pencerenin kullanımını gösteren örnek kod.

ithal javax.swing.*;

ithal java.awt. *;

ithal java.awt.geom.Ellipse2D;

ithal java.awt.geom.GeneralPath;

kamu sınıf JavaShapedWindow uzanır JFrame {

kamu JavaShapedWindow() {

süper(“Şeklinde Pencere Set”);

//Bir sonuca ulaşmak için KAPALI bezemesiz ayarlayın

setUndecorated(gerçek);

//Boyutunu ayarlayın

setSize(yeni Boyut(250, 250));

//Çokgen özelliklerini ayarlayın

Poligon çokgen = yeni Çokgen();

polygon.addPoint(0, 100);

polygon.addPoint(50, 0);

polygon.addPoint(100, 100);

//Şeklin ayarları yapın

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

//Genel yolu özelliklerini ayarlama

GeneralPath gpath = yeni GeneralPath();

gpath.append(çokgen, gerçek);

gpath.append(newCircle, gerçek);

//Yolunu ayarlama

setShape(gpath);

//Kutusu düzenini ayarlamak

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

eklemek(Kutu.createHorizontalGlue());

//Etiket ve set özellikleri oluşturma

JLabel newlabel = yeni JLabel(“Java Şekilli pencere”);

newlabel.setForeground(Renk.beyaz);

eklemek(newlabel);

eklemek(Kutu.createHorizontalGlue());

//İçerik bölmesinde arka plan rengini ayarlayın

getContentPane().setBackground(Renk.mavi);

//Konumunu ayarlama

setLocationRelativeTo(sıfır);

setVisible(gerçek);

}

kamu statik geçersiz ana(Dizi[] args) {

Gençlik Girişim GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Bu özellik için işletim sistemi desteği kontrol edin

eğer (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {

Sistem.dışarı.println(“OS saydamlık destekler”);

yeni JavaShapedWindow();

}

}

}

Ayrıca saydamlık ve şekilli pencere gibi iki özellik bir arada uygulayabilirsiniz. Bu uygulamak için, çerçeve için setOpacity yöntemini çağırın. Sonuç penceresi kombine etkisi gösterecektir. Ama biz temel işletim sistemi piksel düzeyinde saydamlık ve piksel düzeyinde şeffaflık desteklemelidir unutulmamalıdır.

Sonuç:

Bu yazıda java7.The saydamlık bazı yeni özellikler örtülü var ve şekilli pencere özellikleri gerçekten ilginç ve java UI bileşenleri daha esnek hale. Ama aynı zamanda biz temel işletim sistemi, tüm bu özellikleri destekleyen gerektiğini unutmamalısınız. Aksi takdirde etki görülebilir olmayacak. Yani uygulamanın kendisinde biz işletim sistemi desteği kontrol edin ve daha sonra etkisini uygulamak. Java en son özelliği, geliştiriciler UI yan etkisi farklı oluşturmanıza olanak sağlar. Hepimizin bakınca biliyorum ve hissediyorum herhangi bir UI tabanlı uygulama önemli bir yönüdür. Yani geliştirici şimdi UI daha hoş ve çekici hale getirmek için araçları ile donatılmıştır.

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share