Cum de a crea ferestre translucide și în formă în Java?

Prezentare generală: În acest articol vom discuta despre transparență și diferite ferestre în formă în Java. În Java 7 leagăn acceptă această caracteristică și fabricarea de componente UI swing mai flexibil și ușor de utilizat.

Introducere: În unele aplicații, Fereastra transparentă este o cerință de a sprijini funcționalitatea acestuia. Acum în Java, transparență poate fi pusă în aplicare. O fereastră translucid este creat prin modificarea opacitatea prin implementarea o metoda numita setOpacity pe o componentă JFrame. Dar noi trebuie să înțelegem că o fereastră translucide este posibilă numai în cazul în care sistemul de operare de bază se sprijină. Și noi, de asemenea, trebuie să vă asigurați că fereastra nu este decorat. Pentru a face o fereastră nedecorat, aveți nevoie pentru a apela setUndecorated (adevărat) metodă. Unele timp este de asemenea necesar să se schimbe forma unei UI fereastră. Pentru a pune în aplicare, avem nevoie pentru a apela metoda setShape în cadrul metodei componentResized. Aceasta va recalcula forma atunci când fereastra este redimensionată.

Înapoi la sol: În Java UI, suport pentru ferestre transluciditatea și formă a fost o cerere mult timp pentru componente Swing / AWT. Pentru a avea acces nativ la dezvoltarea acestor proprietăți sunt disponibile la timp înapoi. Dar nu a fost accesibil la componentele de bază Java. În Java6 mai departe, sprijin pentru transluciditatea și forma ferestrei sunt disponibile. Chiar pe transluciditatea nivel de pixel este, de asemenea, sprijină în Java7.

Tip de suport pentru transluciditate și transparență: Java 7 acceptă trei tipuri următoarele de suport.

TRANSLUCENT: În această caracteristică fereastra poate avea culori diferite, dar cu același nivel de opacitate. Deci, valoarea alfa este aceeași pentru toți pixelii. Acest efect este potrivit pentru dispărea de pe o fereastră și apoi scade treptat și crește valoarea alfa.

PERPIXEL_TRANSLUCENT: Această proprietate sprijină valorile alfa diferite în cadrul ferestrei în sine. Aceasta este folosită pentru a decolora regiunea selectată a ferestrei.

PERPIXEL_TRANSPARENT: Această proprietate acceptă diferite forme de ferestre, mai degrabă decât dreptunghi tradiționale. Dacă pe transparență pixel este susținut apoi diferite forme, cum ar fi cerc, triunghi pot fi create.

Înainte de a utiliza oricare dintre proprietățile de mai sus avem nevoie pentru a testa sprijinul din cadrul sistemului de operare minte. Testul se poate realiza prin utilizarea metodei isWindowTranslucencySupported aparținând clasei java.awt.GraphicsDevice. Este nevoie de tipul de transparență ca intrare și returnează adevărat / fals pentru a indica sprijinul.

Să ne verifica un cod de probă pentru a pune în aplicare funcția transluciditatea. În acest exemplu, am creat o fereastră dreptunghiulară translucid pe o zonă de text. În primul rând ne-am dezactivat modul de decorare a obține efectul de transparență. Apoi, am verificat dacă sistemul de operare care stau la baza nu acceptă sau. Dacă susținut efectul este vizibil pe rama ferestrei.

Listing1: Eșantion Translucența arată de o fereastră JFrame

import java.awt.Color;

import java.awt.GraphicsDevice;

import java.awt.GraphicsEnvironment;

import java.awt.GridBagLayout;

import java.awt.event.ComponentAdapter;

import java.awt.event.ComponentEvent;

import java.awt.geom.Rectangle2D;

import javax.swing.JFrame;

import javax.swing.JTextArea;

import javax.swing.SwingUtilities;

public clasă TransRecFrame extinde JFrame {

/**

* Crearea unui cadru dreptunghiular transparent cu 85% transparență

*/

public TransRecFrame() {

super(“Cadru dreptunghiular translucid”);

//Setați aspectul

setLayout(nou GridBagLayout());

//A crea o zonă de text

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

txtArea.setBackground(Culoare.CYAN);

adăuga(txtArea);

//Apel pentru a dezactiva decor

setUndecorated(adevărat);

 

//Call setShape pentru a redimensiona forma atunci când widnow este redimensionată

addComponentListener(nou ComponentAdapter() {

@ Suprascriere

public anula componentResized(ComponentEvent și) {

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

}

});

//Face fereastra 85% transparent

setOpacity(0.85f);

//Seta alți parametri

setLocationRelativeTo(zero);

setSize(200, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(adevărat);

}

public static anula principal(Șir[] args) {

//Crearea unui mediu grafic

Tineretului Venture GraphicsEnvironment = GraphicsEnvironment

.getLocalGraphicsEnvironment();

//Verificați dacă sistemul de operare acceptă Translucenta

dacă (genv.getDefaultScreenDevice().isWindowTranslucencySupported(

GraphicsDevice.WindowTranslucency.TRANSLUCENT)) {

Println(“OS suporta translucenta”);

nou TransRecFrame();

}

}

}

Caracteristici pentru a sprijini translucenta și forma: În Java7 există în principal trei caracteristici disponibile pentru a sprijini transluciditatea și forma o fereastră.

  • Fereastra translucenta complet: În această abordare fereastra complet este translucid.
  • Pe translucenta pixel: În această abordare o parte a ferestrei este translucid
  • Ferestre în formă: Face ferestre diferite forme, cum ar fi ovale, cerc, dreptunghiular etc.

Pe translucenta pixel:

Am văzut deja cum să facă un translucid complet fereastră în exemplul anterior. Acum vom discuta despre cea de a doua parte a face un set de pixeli translucide prin utilizarea de culori de fundal. Există unele limitări pentru a pune în aplicare acest scenariu. Fereastra nu ar trebui să fie ecran complet și sistemul trebuie să sprijine translucenta nivel de pixel. Restul procedurii este similară cu exemplul de mai sus.

În următorul exemplu vom vedea cum transluciditatea nivel de pixel este situat într-un cadru.

Listing2: Probă care indică pixel nivel de suport translucenta.

import javax.swing.*;

import java.awt. *;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public clasă PixelTranslucency extinde JFrame {

public PixelTranslucency() {

super(“Setați nivel de pixel translucenta”);

//Setați dimensiunea JFrame

setSize(250, 250);

//Stabilit expune

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

//Apel pentru stabilirea pixel

pentru(Int i = 0; eu < 16; i ){

adăuga(nou Panoul Pixel(255 – eu * 12));

}

//Set de fundal și alte proprietăți

setBackground(nou Culoare(0, 0, 0, 0));

setLocationRelativeTo(zero);

setVisible(adevărat);

}

public static anula principal(Șir[] args) {

Tineretului Venture GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Verificați dacă fereastra acceptă translucenta

dacă (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT)) {

Sistem.afară.println(“OS suporta translucenta”);

nou PixelTranslucency();

}

} privat clasă Panoul Pixel extinde JPanel {

privat Panoul Pixel(Int pixl) {

super();

setBackground(nou Culoare(0, 0, 255, pixl));

}

}

}

Ferestre în formă:

Acum vom discuta despre o altă caracteristică importantă susținută de fereastra in forma de Java7.The suporta toate tipurile de forme Oricare ar fi cerința de a utilizatorului. Această caracteristică vă ajută să creați orice formă cum ar fi cerc, triunghi, poligon sau orice forma complexa posibil. Metoda setShape din clasa ferestrei este disponibil pentru amenajarea proprietate. Dar, din nou, trebuie să ne amintim că modul ecran complet nu ar trebui să fie permisă, iar sistemul de operare suporta translucenta.

Următorul exemplu arată utilizarea de formă fereastră.

Listing3: Codul de probă care indică utilizarea în formă de fereastră.

import javax.swing.*;

import java.awt. *;

import java.awt.geom.Ellipse2D;

import java.awt.geom.GeneralPath;

public clasă JavaShapedWindow extinde JFrame {

public JavaShapedWindow() {

super(“Stabilit în formă de ferestre”);

//Setat nedecorat OFF pentru a obține un efect

setUndecorated(adevărat);

//Stabilit mărimea

setSize(nou Dimensiune(250, 250));

//Setați proprietățile poligon

Poligon = poligon nou Poligon();

polygon.addPoint(0, 100);

polygon.addPoint(50, 0);

polygon.addPoint(100, 100);

//Seta valorile formei

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

//Setați proprietățile generale traseu

GeneralPath gpath = nou GeneralPath();

gpath.append(poligon, adevărat);

gpath.append(newCircle, adevărat);

//Setați calea

setShape(gpath);

//Set aspect box

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

adăuga(Cutie.createHorizontalGlue());

//Creați etichete și set de proprietăți

JLabel newlabel = nou JLabel(“Java fereastră în formă de”);

newlabel.setForeground(Culoare.alb);

adăuga(newlabel);

adăuga(Cutie.createHorizontalGlue());

//Stabilit conținutul panoul de culoare de fundal

getContentPane().setBackground(Culoare.cyan);

//Setați locația

setLocationRelativeTo(zero);

setVisible(adevărat);

}

public static anula principal(Șir[] args) {

Tineretului Venture GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Verifica suport sistem de operare pentru această proprietate

dacă (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {

Sistem.afară.println(“OS suporta translucenta”);

nou JavaShapedWindow();

}

}

}

Putem pune în aplicare, de asemenea, o combinație de două caracteristici cum ar fi fereastra de transluciditate și formă. Pentru a pune în aplicare această, apel metoda setOpacity la rama. Fereastra Rezultatul va afișa efectul combinat. Dar trebuie să ne amintim sistemul de operare de bază trebuie să sprijine transluciditatea nivel de pixel și transparență nivel de pixel.

Concluzie:

În acest articol, am acoperit unele caracteristici noi în transluciditatea java7.The și caracteristici în formă de ferestre sunt foarte interesante și de a face componente Java UI mai flexibil. Dar, în același timp, trebuie să ne amintim că sistemul de operare de bază ar trebui să sprijine toate aceste proprietăți. Altfel efectul nu va fi vizibil. Deci, în cerere, vom verifica suportul sistemului de operare și apoi punerea în aplicare a efectului. Cele mai recente caracteristică Java permite dezvoltatorilor să creeze diferite tipuri de efecte pe partea de UI. După cum știm cu toții că aspectul este un aspect important al oricărei aplicații bazate pe UI. Asa ca dezvoltatorul este acum echipat cu instrumente pentru a face interfața cu utilizatorul mai plăcut și atractiv.

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share