Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Paneles transparentes

Hola a todos.

Actualmente tengo un JPannel dentro de un scrollPanel en el que puedo hacer dibujos. Ahora quiero hacer que se dibuje un grid. Mi pregunta es: ¿Cómo podría hacer para poner un JPanel en el que se dibujara un grid, endima de este el JPanel en el que se dibujarán las formas?

¿Se puede hacer?

Muchas gracias.

junio 12, 2015 | Unregistered CommenterCodeSniffer

Hola.
Un ejemplo de paneles transparentes.
Clase panel translucido

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;

import javax.swing.JPanel;

/**
* @author Oscar
*
*/
public class TranslucentJPanel extends JPanel {
private int red = 240;
private int green = 240;
private int blue = 240;

public TranslucentJPanel(Color bgColor) {
this.red = bgColor.getRed();
this.green = bgColor.getGreen();
this.blue = bgColor.getBlue();
}

@Override
protected void paintComponent(Graphics g) {
if (g instanceof Graphics2D) {
int width = this.getWidth();
int height = this.getHeight();
float startPointX = 0.0f;
float startPointY = 0.0f;
float endPointX = width;
float endPointY = 0.0f;
Color startColor = new Color(red, green, blue, 255);
Color endColor = new Color(red, green, blue, 0);
// Create a GradientPaint object
Paint paint = new GradientPaint(startPointX, startPointY,
startColor, endPointX, endPointY, endColor);
Graphics2D g2D = (Graphics2D) g;
g2D.setPaint(paint);
g2D.fillRect(0, 0, width, height);
}
}

/**
*
*/
private static final long serialVersionUID = 2833279287526264948L;
}

Clase principal

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

import static java.awt.GraphicsDevice.WindowTranslucency.*;

/**
*
*/

/**
* @author Oscar
*
*/
public class TranslucencySupport extends JFrame {
public TranslucencySupport() {
super("Hola Mundo");
initFrame();
}

public void initFrame() {
closeButton = new JButton("Cerrar");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
// Asegúrese de que el marco es sin decorar
this.setUndecorated(true);
this.setBackground(new Color(0, 0, 0, 0));
// Establezca 40 % de opacidad . Es decir, 60 % translucidez.
this.setOpacity(0.40f);
// Establezca su tamaño
this.setSize(200, 200);
this.getContentPane().setLayout(new GridLayout(0, 1));
// Crear y añadir tres JPanel con diferentes gradientes de color
this.add(new TranslucentJPanel(Color.RED));
this.add(new TranslucentJPanel(Color.GREEN));
this.add(new TranslucentJPanel(Color.BLUE));
// Centrarla en la pantalla
this.setLocationRelativeTo(null);
// Agregue un botón para cerrar la ventana
this.add(closeButton, BorderLayout.SOUTH);
// Salir de la aplicacion cuando se hace clic en el botón Cerrar
closeButton.addActionListener(e -> System.exit(0));
}

/**
* @param args
*/
public static void main(String... args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(() -> {
new TranslucencySupport().setVisible(true);
});
GraphicsEnvironment graphicsEnv = GraphicsEnvironment
.getLocalGraphicsEnvironment();
GraphicsDevice graphicsDevice = graphicsEnv.getDefaultScreenDevice();
// Imprimir la translucidez el apoyo de la plataforma
boolean isSupported = graphicsDevice
.isWindowTranslucencySupported(PERPIXEL_TRANSPARENT);
System.out.println("PERPIXEL_TRANSPARENT supported: " + isSupported);
isSupported = graphicsDevice.isWindowTranslucencySupported(TRANSLUCENT);
System.out.println("TRANSLUCENT supported: " + isSupported);
isSupported = graphicsDevice
.isWindowTranslucencySupported(PERPIXEL_TRANSLUCENT);
System.out.println("PERPIXEL_TRANSLUCENT soportafo: " + isSupported);
}

/**
*
*/
private static final long serialVersionUID = -5118170795622847415L;
private JButton closeButton;
}

junio 22, 2015 | Unregistered CommenterOscar