Como criar janelas translúcidas e moldado em Java?

Visão global: Neste artigo vamos discutir sobre a transparência e as diferentes janelas em forma em Java. Em java 7 balanço suporta esta função e fabrico de componentes de interface do usuário do balanço mais flexível e fácil de usar.

Introdução: Em alguns aplicativos, janela transparente é uma exigência para apoiar a sua funcionalidade. Agora em Java, transparência pode ser implementado. Uma janela transparente é criada pela alteração da sua opacidade pela implementação de um método chamado setOpacity num componente JFrame. Mas devemos entender que uma janela translúcida só é possível se o sistema operacional subjacente suporta. E também precisa ter certeza de que a janela não está decorado. Para fazer com que uma janela sem decoração, você precisa chamar setUndecorated (verdadeiro) método. Algum tempo que também é necessário para alterar a forma de uma janela de UI. Para implementá-lo, precisamos chamar o método setShape dentro do método componentResized. Ele irá recalcular a forma quando a janela é redimensionada.

Back ground: Em java UI, apoio à janela translucidez e forma era uma demanda muito tempo para componentes Swing / AWT. Para ter acesso desenvolvimento nativo para essas propriedades estão disponíveis há muito tempo atrás. Mas não era acessível aos componentes do núcleo de Java. Em Java6 em diante, apoio a translucidez e janela em forma está disponível. Mesmo por nível de translucidez do pixel é também apoia em Java7.

Tipo de suporte para translucidez e transparência: Java 7 suporta os três tipo de apoio seguinte.

TRANSLUCENT: Neste aspecto da janela pode ter cores diferentes, mas com o mesmo nível de opacidade. Assim, o valor de alfa é o mesmo para todos os pixels. Este efeito é adequado para desbotar fora de uma janela e depois diminui gradualmente e aumenta o valor de alfa.

PERPIXEL_TRANSLUCENT: Esta propriedade oferece suporte a diferentes valores de alfa dentro da própria janela. Isto é usado para desaparecer região selecionada da janela.

PERPIXEL_TRANSPARENT: Esta propriedade oferece suporte a diferentes formas de janelas ao invés de retângulo tradicional. Se transparência por pixel é suportado, em seguida, diferentes formas como círculo, triângulo pode ser criada.

Antes de usar qualquer uma das propriedades acima precisamos testar o apoio de mentir sob sistema operacional. O teste pode ser feito usando o método isWindowTranslucencySupported pertencente à classe java.awt.GraphicsDevice. Leva o tipo de transparência como entrada e retorna true / false para indicar o apoio.

Vamos verificar um exemplo de código para implementar a funcionalidade de translucidez. Neste exemplo, criamos uma janela translúcida retangular em uma área de texto. Primeiro vamos ter desabilitado o modo de decoração para obter o efeito de transparência. Então, temos verificado se o sistema operacional subjacente suporta ou não. Se for suportado o efeito é visível na janela do quadro.

Listing1: Exemplo mostrando Translucency de uma janela JFrame

importar java.awt.Color;

importar java.awt.GraphicsDevice;

importar java.awt.GraphicsEnvironment;

importar java.awt.GridBagLayout;

importar java.awt.event.ComponentAdapter;

importar java.awt.event.ComponentEvent;

importar java.awt.geom.Rectangle2D;

importar javax.swing.JFrame;

importar javax.swing.JTextArea;

importar javax.swing.SwingUtilities;

público classe TransRecFrame estende-se JFrame {

/**

* Criar um quadro retangular transparente com 85% transparência

*/

público TransRecFrame() {

super(“Quadro retangular translúcido”);

//Definir o layout

SetLayout(novo GridBagLayout());

//Criar uma área de texto

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

txtArea.setBackground(Cor.CYAN);

adicionar(txtArea);

//Chamada para desativar decoração

setUndecorated(verdadeiro);

 

//Chame setShape para redimensionar a forma quando widnow é redimensionada

addComponentListener(novo ComponentAdapter() {

@ Override

público invalidar componentResized(ComponentEvent e) {

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

}

});

//Faça a janela 85% transparente

setOpacity(0.85f);

//Definir outros parâmetros

setLocationRelativeTo(zero);

setSize(200, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(verdadeiro);

}

público estático invalidar principal(Corda[] args) {

//Criar ambiente gráfico

Geração MudaMundo GraphicsEnvironment = GraphicsEnvironment

.getLocalGraphicsEnvironment();

//Verifique se o sistema operacional suporta Translucidez

se (genv.getDefaultScreenDevice().isWindowTranslucencySupported(

GraphicsDevice.WindowTranslucency.TRANSLUCENT)) {

System.out.println(“OS suporta translucidez”);

novo TransRecFrame();

}

}

}

Recursos para apoiar translucidez e forma: Em Java7 existem essencialmente três funções disponíveis para suportar translucidez e forma de uma janela.

  • Janela completa translucidez: Nesta abordagem janela completa é translúcido.
  • Por pixel translucidez: Nesta abordagem, uma parte do vidro é translúcida
  • Janelas em forma: Faça diferentes janelas em forma como ovale, círculo, retangular etc.

Por pixel translucidez:

Nós já vimos como fazer uma janela translúcida completa no exemplo anterior. Agora vamos discutir a segunda parte da tomada de um conjunto de pixels transparentes usando sua cor de fundo. Existem algumas limitações para implementar este cenário. A janela não deve ser em tela cheia eo sistema deve suportar nível de translucidez pixels. O resto do procedimento é semelhante ao exemplo acima,.

No exemplo a seguir, veremos como nível de translucidez pixel é definido em um quadro.

Listing2: Exemplo mostrando apoio translucidez nível de pixel.

importar javax.swing.*;

importar java.awt. *;

importar java.awt.event.ActionEvent;

importar java.awt.event.ActionListener;

público classe PixelTranslucency estende-se JFrame {

público PixelTranslucency() {

super(“Definir nível de pixel translucidez”);

//Defina o tamanho do JFrame

setSize(250, 250);

//Definir lay out

getContentPane().SetLayout(novo GridLayout(6, 6));

//Chamada para definição de pixels

para(int i = 0; Eu < 16; i ){

adicionar(novo Painel Pixel(255 – Eu * 12));

}

//Definir fundo e outras propriedades

setBackground(novo Cor(0, 0, 0, 0));

setLocationRelativeTo(zero);

setVisible(verdadeiro);

}

público estático invalidar principal(Corda[] args) {

Geração MudaMundo GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Verifique se a janela apoia translucidez

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

Sistema.fora.println(“OS suporta translucidez”);

novo PixelTranslucency();

}

} privado classe Painel Pixel estende-se JPanel {

privado Painel Pixel(int pixl) {

super();

setBackground(novo Cor(0, 0, 255, pixl));

}

}

}

Janelas em forma:

Agora vamos discutir sobre outra característica importante apoiado por Java7.The janela em forma suporta todos os tipos de formas Qualquer que seja a exigência do usuário. Este recurso ajuda a criar toda a forma como um círculo, triângulo, polígono ou qualquer forma complexa possível. O método setShape da classe de janela está disponível para a configuração da propriedade. Mas, novamente, temos que lembrar que o modo de tela cheia não deve ser permitido eo sistema operacional suporta translucidez.

O exemplo seguinte mostra o uso em forma de janela.

Listing3: O código de exemplo mostrando o uso da janela em forma.

importar javax.swing.*;

importar java.awt. *;

importar java.awt.geom.Ellipse2D;

importar java.awt.geom.GeneralPath;

público classe JavaShapedWindow estende-se JFrame {

público JavaShapedWindow() {

super(“Definir a janela em forma”);

//Definir undecorated OFF para obter um efeito

setUndecorated(verdadeiro);

//Defina o tamanho

setSize(novo Dimensão(250, 250));

//Definir as propriedades de polígonos

Polígono polígono = novo Polígono();

polygon.addPoint(0, 100);

polygon.addPoint(50, 0);

polygon.addPoint(100, 100);

//Definir os valores da forma

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

//Definir as propriedades de caminho gerais

GeneralPath GPath = novo GeneralPath();

gpath.append(polígono, verdadeiro);

gpath.append(newCircle, verdadeiro);

//Defina o caminho

setShape(GPath);

//Definir layout da caixa

getContentPane().SetLayout(novo BoxLayout(getContentPane(), BoxLayout.X_AXIS));

adicionar(Caixa.createHorizontalGlue());

//Criar rótulo e definir propriedades

JLabel newlabel = novo JLabel(“Janela em forma de Java”);

newlabel.setForeground(Cor.branco);

adicionar(newlabel);

adicionar(Caixa.createHorizontalGlue());

//Definir conteúdo do painel cor de fundo

getContentPane().setBackground(Cor.ciano);

//Definir local

setLocationRelativeTo(zero);

setVisible(verdadeiro);

}

público estático invalidar principal(Corda[] args) {

Geração MudaMundo GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Verifique suporte OS para esta propriedade

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

Sistema.fora.println(“OS suporta translucidez”);

novo JavaShapedWindow();

}

}

}

Podemos também implementar uma combinação de dois recursos como a janela translucidez e em forma. Para implementar esta, chamar o método setOpacity para o seu quadro. A janela de resultado irá mostrar o efeito combinado. Mas devemos lembrar do sistema operacional subjacente deve suportar nível de translucidez de pixel e transparência nível de pixel.

Conclusão:

Neste artigo, nós cobrimos algumas novidades em translucidez java7.The e recursos de janela em forma são realmente interessantes e fazer componentes Java UI mais flexível. Mas, ao mesmo tempo, devemos lembrar que o sistema operacional subjacente devem apoiar todas estas propriedades. Caso contrário, o efeito não será visível. Assim, no próprio aplicativo, verificar o suporte do sistema operacional e, em seguida, implementar o efeito. O recurso mais recente do Java permite que os desenvolvedores para criar diferentes tipos de efeitos do lado da UI. Como todos nós sabemos que a aparência é um aspecto importante de qualquer aplicativo baseado na interface do usuário. Assim, o desenvolvedor está agora equipado com ferramentas para fazer a interface do usuário mais agradável e atraente.

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share