Jak stworzyć półprzezroczyste i Shaped Windows w Javie?

Przegląd: W tym artykule omówimy o przejrzystości i różnych okien w kształcie w Javie. W Javie 7 huśtawka obsługuje tę funkcję i co komponenty UI huśtawka bardziej elastyczny i przyjazny dla użytkownika.

Wprowadzenie: W niektórych aplikacji, przezroczyste okno jest wymóg wspierania jego funkcjonalność. Teraz w Javie, przezroczystości może być realizowane. Przezroczyste okno jest tworzone przez zmianę jego krycie przez wdrożenie metody nazywanej SetOpacity na JFrame składnika. Ale musimy zrozumieć, że przezroczyste okno jest możliwe tylko, jeśli podstawowy system operacyjny obsługuje go. I trzeba też upewnić się, że okno nie jest urządzony. Aby okno bez dekoracji, trzeba zadzwonić setUndecorated (prawdziwy) metoda. Jakiś czas konieczne jest również, aby zmienić kształt okna UI. Aby wdrożyć, musimy wywołać setShape metody w componentResized metody. To ponownie wyznaczy kształt podczas zmiany rozmiaru okna.

Tlo: W Java UI, wsparcie dla okna przezierności i kształt był długi czas na popyt Swing / AWT komponentów. Na rodzimym dostępu rozwoju na te właściwości są dostępne od dłuższego czasu z powrotem. Ale to nie było dostępne dla podstawowych składników java. W java6 począwszy, wsparcie dla przezroczystości i kształt okien jest dostępna. Nawet na piksel przezroczystości poziomu jest również wspiera w Java7.

Rodzaj wsparcia dla przezroczystości i przejrzystości: Jawa 7 obsługuje następujące trzy rodzaje wsparcia.

TRANSLUCENT: W tej funkcji okna mogą mieć różne kolory, ale o tym samym poziomie nieprzezroczystości. Tak więc wartość alfa jest taki sam dla wszystkich pikseli. Efekt ten jest odpowiedni dla pojawiania się okno, a następnie stopniowo zmniejsza się i zwiększa wartość alfa.

PERPIXEL_TRANSLUCENT: Ta właściwość obsługuje różne wartości alfa wewnątrz samego okna. Służy zanikać wybrany region oknie.

PERPIXEL_TRANSPARENT: Ta właściwość obsługuje różne kształty okien, zamiast tradycyjnego prostokąta. Jeśli za przejrzystość pikseli jest obsługiwane wówczas różne kształty, takie jak koło, Trójkąt może być utworzona.

Zanim zaczniemy używać powyższych właściwości musimy testować wsparcie w ramach systemu leżącego operacyjnego. Test może być wykonane za pomocą metody isWindowTranslucencySupported należące do klasy java.awt.GraphicsDevice. Zajmuje rodzaj przejrzystości jako wejście i zwraca true / false, aby wskazać wsparcie.

Sprawdźmy przykładowy kod do wdrożenia funkcji półprzezroczystości. W tym przykładzie stworzyliśmy prostokątny przezroczyste okno na obszarze tekstu. Najpierw musimy wyłączyć tryb dekoracji, aby uzyskać efekt przejrzystości. Następnie sprawdziliśmy, czy podstawowy system operacyjny obsługuje lub nie. Jeśli wspierany efekt jest widoczny w oknie ramki.

Listing1: Sample pokazując Translucency z okna 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;

publiczny klasa TransRecFrame rozszerza JFrame {

/**

* Tworzenie przejrzystej prostokątną ramkę z 85% przezroczystość

*/

publiczny TransRecFrame() {

wspaniały(“Translucent prostokątna rama”);

//Ustaw układ

setLayout(nowy GridBagLayout());

//Tworzenie pola tekstowego

finał JTextArea txtArea = nowy JTextArea(5, 50);

txtArea.setBackground(Kolor.CYAN);

dodać(txtArea);

//Zadzwoń do wyłącza dekorację

setUndecorated(prawdziwy);

 

//Zadzwoń setShape aby zmienić rozmiar kształtu, gdy widnow jest zmieniany

addComponentListener(nowy ComponentAdapter() {

@ Override

publiczny unieważnić componentResized(ComponentEvent i) {

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

}

});

//Dodać okno 85% przezroczysty

SetOpacity(0.85f);

//Ustaw inne parametry

setLocationRelativeTo(zero);

setSize(200, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(prawdziwy);

}

publiczny statyczny unieważnić główny(Smyczkowy[] args) {

//Tworzenie środowiska graficznego

Youth Venture GraphicsEnvironment = GraphicsEnvironment

.getLocalGraphicsEnvironment();

//Sprawdź, czy system operacyjny obsługuje Translucency

jeśli (genv.getDefaultScreenDevice().isWindowTranslucencySupported(

GraphicsDevice.WindowTranslucency.TRANSLUCENT)) {

System.out.println(“OS obsługuje przezroczystość”);

nowy TransRecFrame();

}

}

}

Funkcje wspierające przezroczystość i kształt: W Java7 są głównie trzy funkcje dostępne w celu wspierania przezroczystość i kształt okna.

  • Pełna przezroczystość okna: W tym podejściu pełne okno jest przezroczyste.
  • Per przezroczystości piksela: W tym podejściu część okna jest półprzezroczysty
  • Okna w kształcie: Producent okien o różnych kształtach, takich jak ovale, krąg, itp. prostokątny.

Per przezroczystości piksela:

Widzieliśmy już, jak zrobić pełną przezroczyste okna w poprzednim przykładzie. Teraz omówimy drugą część tworzenia zestawu pikseli przezroczystych za pomocą ich koloru tła. Istnieją pewne ograniczenia w celu wdrożenia tego scenariusza. Okno nie powinno być na pełnym ekranie, a system musi obsługiwać przezroczystość pikseli na poziomie. Reszta procedury jest podobna do powyższego przykładu.

W poniższym przykładzie zobaczymy, jak pixel przezierność poziom znajduje się w ramce.

Listing2: Sample pokazujący poziom pixel wsparcia przezierność.

import javax.swing.*;

import java.awt. *;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

publiczny klasa PixelTranslucency rozszerza JFrame {

publiczny PixelTranslucency() {

wspaniały(“Ustaw przezroczystość pikseli na poziomie”);

//Ustaw rozmiar JFrame

setSize(250, 250);

//Ustaw rozłożyć

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

//Zaproszenie do ustawień rozdzielczości

dla(int i = 0; ja < 16; I ){

dodać(nowy Zespół Pixel(255 – ja * 12));

}

//Ustaw tło i inne właściwości

setBackground(nowy Kolor(0, 0, 0, 0));

setLocationRelativeTo(zero);

setVisible(prawdziwy);

}

publiczny statyczny unieważnić główny(Smyczkowy[] args) {

Youth Venture GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Sprawdź, czy okno obsługuje przezierność

jeśli (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT)) {

System.na zewnątrz.println(“OS obsługuje przezroczystość”);

nowy PixelTranslucency();

}

} prywatny klasa Zespół Pixel rozszerza JPanel {

prywatny Zespół Pixel(int pixl) {

wspaniały();

setBackground(nowy Kolor(0, 0, 255, pixl));

}

}

}

Okna w kształcie:

Teraz będziemy dyskutować o innej ważnej funkcji obsługiwanych przez Java7.The kształcie okna obsługuje wszystkie rodzaje kształtów, co być wymóg użytkownika. Ta funkcja pozwala na tworzenie dowolnych kształtów, takich jak koła, trójkąt, wielokąt lub kształt ewentualny kompleks. SetShape metoda klasy okna jest dostępny na ustawienie właściwości. Ale znowu musimy pamiętać, że tryb pełnoekranowy nie powinno być dozwolone, a system operacyjny obsługuje przezroczystość.

Poniższy przykład pokazuje wykorzystanie kształcie okna.

Listing3: Przykładowy kod pokazujący użycie kształcie okna.

import javax.swing.*;

import java.awt. *;

import java.awt.geom.Ellipse2D;

import java.awt.geom.GeneralPath;

publiczny klasa JavaShapedWindow rozszerza JFrame {

publiczny JavaShapedWindow() {

wspaniały(“Ustaw okno w kształcie”);

//Zestaw bez dekoracji OFF, aby uzyskać efekt

setUndecorated(prawdziwy);

//Ustaw rozmiar

setSize(nowy Wymiar(250, 250));

//Ustawianie właściwości wielokąta

Polygon = wielokąt nowy Wielokąt();

polygon.addPoint(0, 100);

polygon.addPoint(50, 0);

polygon.addPoint(100, 100);

//Ustaw wartości kształcie

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

//Ustaw ogólne właściwości ścieżki

GeneralPath gpath = nowy GeneralPath();

gpath.append(wielokąt, prawdziwy);

gpath.append(newCircle, prawdziwy);

//Ustaw ścieżkę

setShape(gpath);

//Ustaw układ skrzynki

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

dodać(Pudełko.createHorizontalGlue());

//Tworzenie etykiet i zestaw właściwości

JLabel newlabel = nowy JLabel(“Java Shaped okno”);

newlabel.setForeground(Kolor.biały);

dodać(newlabel);

dodać(Pudełko.createHorizontalGlue());

//Ustaw zawartość okienka kolor tła

getContentPane().setBackground(Kolor.cyan);

//Ustaw lokalizację

setLocationRelativeTo(zero);

setVisible(prawdziwy);

}

publiczny statyczny unieważnić główny(Smyczkowy[] args) {

Youth Venture GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Sprawdź wsparcia systemu operacyjnego dla tego obiektu

jeśli (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {

System.na zewnątrz.println(“OS obsługuje przezroczystość”);

nowy JavaShapedWindow();

}

}

}

Możemy również wprowadzić połączenie dwóch funkcji, takich jak okna przezierności i kształcie. W celu realizacji tego, wywołać metodę SetOpacity do ramki. Okno wynik wyświetli łączny wpływ. Ale należy pamiętać, podstawowy system operacyjny musi obsługiwać pixel przezroczystość poziom i przejrzystość na poziomie pikseli.

Wniosek:

W tym artykule omówiliśmy kilka nowych funkcji w java7.The przezierności i ukształtowane cechy okna są naprawdę ciekawe i sprawiają java składniki UI bardziej elastyczne. Ale jednocześnie musimy pamiętać, że podstawowy system operacyjny powinien wspierać wszystkie te właściwości. W przeciwnym razie efekt nie będzie widoczny. Tak więc w samej aplikacji możemy sprawdzić wsparcie OS, a następnie wdrożyć skuteczne. Ostatnia cecha Java pozwala programistom tworzyć różne rodzaje efektu po stronie UI. Jak wszyscy wiemy, że wygląd jest ważnym elementem każdej aplikacji interfejsu użytkownika opartego na. Więc deweloper jest teraz wyposażona w narzędzia do UI bardziej przyjemny i atrakcyjny.

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share