Como crear fiestras translúcidas e moldeado en Java?

Visión global: Neste artigo imos discutir sobre a transparencia e as distintas fiestras en forma en Java. En java 7 balance admite esta función e fabricación de compoñentes de interface de usuario do balance máis flexible e fácil de usar.

Introdución: Nalgúns programas, ventá transparente é unha esixencia para apoiar a súa función. Agora en Java, transparencia pode ser aplicado. Unha xanela transparente é creada pola modificación da súa opacidade pola implementación dun método chamado setOpacity nun compoñente JFrame. Pero debemos entender que unha xanela transparente só é posible se o sistema operativo subxacente soporta. E tamén ten que estar seguro de que o diálogo non está decorado. Para facer que unha fiestra sen decoración, ten que chamar setUndecorated (certo) método. Algún tempo que tamén é necesario para cambiar a forma dunha fiestra de UI. Para implementar lo, necesitamos chamar ao método setShape dentro do método componentResized. Ha recalcular o xeito cando a xanela é reescalala.

Back ground: En java UI, apoio á fiestra transparencia e forma era unha demanda moito tempo para compoñentes Swing / AWT. Para ter acceso desenvolvemento nativo para esas propiedades están dispoñibles hai moito tempo atrás. Pero non era accesible aos compoñentes do núcleo de Java. En java6 en diante, apoio a transparencia e diálogo en forma dispoñible. Aínda por nivel de transparencia do pixel é tamén apoia en Java7.

Tipo de soporte para transparencia e transparencia: Java 7 soporta os tres tipo de apoio seguinte.

TRANSLUCENT: Neste aspecto da fiestra pode ter cores diferentes, pero co mesmo nivel de opacidade. Así, o valor de alfa é a mesma para todos os píxeles. Este efecto é adecuado para desbotar fora dunha fiestra e despois diminúe gradualmente e aumenta o valor de alfa.

PERPIXEL_TRANSLUCENT: Esta propiedade ofrece soporte a distintos valores de alfa dentro da propia xanela. Isto úsase para desaparecer rexión seleccionada do diálogo.

PERPIXEL_TRANSPARENT: Esta propiedade ofrece soporte a diferentes formas de fiestras en vez de rectángulo tradicional. Se transparencia por pixel está soportado, a continuación, distintas formas como círculo, triángulo pode ser creada.

Antes de utilizar calquera das propiedades enriba necesitamos examinar apoio de mentir baixo sistema operativo. A proba pode ser feito empregando o método isWindowTranslucencySupported pertencente á clase java.awt.GraphicsDevice. Leva o tipo de transparencia como entrada e retorna true / false para indicar apoio.

Imos comprobar un exemplo de código para aplicar a función de transparencia. Neste exemplo, creamos unha xanela transparente rectangular nunha área de texto. Primeiro imos deshabilitado o modo de decoración para obter o efecto de transparencia. Entón, temos comprobado que o sistema operativo subxacente soporta ou non. Se o admite o efecto é visible na ventá do cadro.

Listing1: Exemplo mostra Translucency dunha fiestra JFrame

descargar java.awt.Color;

descargar java.awt.GraphicsDevice;

descargar java.awt.GraphicsEnvironment;

descargar java.awt.GridBagLayout;

descargar java.awt.event.ComponentAdapter;

descargar java.awt.event.ComponentEvent;

descargar java.awt.geom.Rectangle2D;

descargar javax.swing.JFrame;

descargar javax.swing.JTextArea;

descargar javax.swing.SwingUtilities;

público clase TransRecFrame esténdese a JFrame {

/**

* Crear un marco rectangular transparente con 85% transparencia

*/

público TransRecFrame() {

super(“Marco rectangular transparentes”);

//Axustar o esquema

SetLayout(novo GridBagLayout());

//Crear unha área de texto

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

txtArea.setBackground(Cor.Cyan);

engadir(txtArea);

//Chamada para desactivar decoración

setUndecorated(certo);

 

//Chama setShape para cambiar o tamaño da forma cando widnow é redimensionada

addComponentListener(novo ComponentAdapter() {

@ Override

público invalidar componentResized(ComponentEvent e) {

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

}

});

//Fai o diálogo 85% transparente

setOpacity(0.85f);

//Definir outros parámetros

setLocationRelativeTo(cero);

setSize(200, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(certo);

}

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

//Crear ambiente gráfico

Xeración MudaMundo GraphicsEnvironment = GraphicsEnvironment

.getLocalGraphicsEnvironment();

//Asegúrese de que o sistema operativo é compatible Transparencia

se (genv.getDefaultScreenDevice().isWindowTranslucencySupported(

GraphicsDevice.WindowTranslucency.TRANSLUCENT)) {

System.out.println(“OS soporta transparencia”);

novo TransRecFrame();

}

}

}

Recursos para apoiar transparencia e forma: En Java7 existen esencialmente tres funcións dispoñibles para soportar transparencia e forma dunha fiestra.

  • Ventá completa transparencia: Nesta visión fiestra completa é traslúcido.
  • Por pixel transparencia: Nesta visión, unha parte do vidro é transparente
  • Fiestras en forma: Fai distintas fiestras en forma ovale, círculo, rectangular etc.

Por pixel transparencia:

Xa vimos como facer unha xanela transparente completa no exemplo anterior. Agora imos discutir a segunda parte da toma de un conxunto de píxeles transparentes usando a súa cor de fondo. Existen algunhas limitacións para aplicar este escenario. A xanela non debe ser a pantalla completa eo sistema debe soportar nivel de transparencia píxeles. O resto do procedemento é similar ao exemplo anterior,.

No exemplo a seguir, veremos como nivel de transparencia píxeles defínese nun cadro.

Listing2: Exemplo mostrando apoio transparencia nivel de pixel.

descargar javax.swing.*;

descargar java.awt. *;

descargar java.awt.event.ActionEvent;

descargar java.awt.event.ActionListener;

público clase PixelTranslucency esténdese a JFrame {

público PixelTranslucency() {

super(“Definir nivel de pixel transparencia”);

//Define o tamaño do JFrame

setSize(250, 250);

//Establecer lay out

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

//Chamada a definición de píxeles

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

engadir(novo Panel Pixel(255 – Eu * 12));

}

//Establecer fondo e outras propiedades

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

setLocationRelativeTo(cero);

setVisible(certo);

}

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

Xeración MudaMundo GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Asegúrese de que a fiestra apoia transparencia

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

Sistema.fóra.println(“OS soporta transparencia”);

novo PixelTranslucency();

}

} privado clase Panel Pixel esténdese a JPanel {

privado Panel Pixel(int pixl) {

super();

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

}

}

}

Fiestras en forma:

Agora imos discutir sobre outra característica importante apoiado por Java7.The ventá en forma soporta todo tipo de formas Calquera que sexa a demanda do usuario. Este recurso axuda a crear toda forma como un círculo, triángulo, polígono ou calquera forma complexa posible. O método setShape da clase de fiestra está dispoñible para a configuración da propiedade. Pero, de novo, hai que recordar que o modo de pantalla completa non debe ser permitido eo sistema operativo soporta transparencia.

O exemplo seguinte mostra o seu uso en forma de ventá.

Listing3: O código de exemplo que mostra a utilización do diálogo en forma.

descargar javax.swing.*;

descargar java.awt. *;

descargar java.awt.geom.Ellipse2D;

descargar java.awt.geom.GeneralPath;

público clase JavaShapedWindow esténdese a JFrame {

público JavaShapedWindow() {

super(“Establecer o diálogo en forma”);

//Establecer undecorated OFF para obter un efecto

setUndecorated(certo);

//Permite definir o tamaño

setSize(novo Dimensión(250, 250));

//Definir as propiedades de polígonos

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

polygon.addPoint(0, 100);

polygon.addPoint(50, 0);

polygon.addPoint(100, 100);

//Establecer os valores da forma

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

//Definir as propiedades camiño xeral

GeneralPath GPath = novo GeneralPath();

gpath.append(polígono, certo);

gpath.append(newCircle, certo);

//Define o camiño

setShape(GPath);

//Establecer esquema da caixa

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

engadir(Caixa.createHorizontalGlue());

//Crear etiqueta e establecer propiedades

JLabel newlabel = novo JLabel(“Ventá en forma de Java”);

newlabel.setForeground(Cor.branco);

engadir(newlabel);

engadir(Caixa.createHorizontalGlue());

//Establecer contido do panel cor de fondo

getContentPane().setBackground(Cor.ciano);

//Establecer local

setLocationRelativeTo(cero);

setVisible(certo);

}

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

Xeración MudaMundo GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Comprobe soporte VOS para esta propiedade

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

Sistema.fóra.println(“OS soporta transparencia”);

novo JavaShapedWindow();

}

}

}

Tamén podemos aplicar unha combinación de dous recursos como a fiestra transparencia e en forma. Para aplicar esta, chamar ao método setOpacity ao seu cadro. A fiestra de resultados amosará o efecto combinado. Pero hai que lembrar do sistema operativo subxacente debe soportar nivel de transparencia de píxeles e transparencia nivel de pixel.

Conclusión:

Neste artigo, nós Cubrimos algunhas novidades en transparencia java7.The e recursos de ventá en forma son realmente interesantes e facer compoñentes Java UI máis flexible. Pero, á vez, hai que recordar que o sistema operativo subxacente deben apoiar todas estas propiedades. En caso contrario, o efecto non será visible. Así, o propio programa, comprobar o soporte do sistema operativo e, a continuación, aplicar o efecto. A característica máis recente de Java permite aos desenvolvedores para crear diferentes tipos de efectos do lado da UI. Como todos sabemos que a aparencia é un aspecto importante de calquera aplicación baseado na interface de usuario. Así, o creador está agora equipado con ferramentas para facer a interface de usuario máis agradable e atractivo.

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share