J'ai un objet Graphics2D
et je veux configurer l'arrière-plan de l'objet. Il a une méthode setBackground
, qui a un paramètre Color. De cette façon, je peux définir la couleur de l'arrière-plan.
Ma question est la suivante: comment définir la transparence de l'arrière-plan de l'objet? Puis-je en quelque sorte dire qu'il soit complètement transparent? Puis-je en quelque sorte dire qu'il soit complètement opaque? Puis-je en quelque sorte lui dire d'avoir une transparence/opacité de 0,8? Comment puis-je définir ces valeurs?
J'ai vu qu'il existe des valeurs int prédéfinies appelées TRANSLUCENT
et OPAQUE
, mais je ne sais pas comment les utiliser.
Peut-être que l’utilisation correcte est d’appeler le constructeur de Color avec un paramètre int?
Vous pouvez construire un objet Color en spécifiant une transparence. Par exemple, le code suivant construit une couleur ROUGE avec une transparence de 50%
Color c=new Color(1f,0f,0f,.5f );
Vous pouvez appeler le constructeur de Color de la manière suivante:
Color c = new Color(r,g,b,a);
où a est la valeur alpha (transparence).
Comme pour toutes les classes Java, ces informations se trouvent dans l'API officielle: http://docs.Oracle.com/javase/7/docs/api/Java/awt/Color.html
C'est une très bonne ressource et peut vous éviter une réponse ici.
jPanel1.setBackground(new Color(0,0,0,200));
/*This will put a transparent black color on a panel, the important part of the code is: .setBackground(new Color(0,0,0,200));*/
Java est vraiment très bon dans ce domaine, vous pouvez obtenir de la transparence et bien plus encore. Voici du code pour une simple fenêtre transparente I copiée depuis Oracle:
package misc;
import Java.awt.*;
import javax.swing.*;
import static Java.awt.GraphicsDevice.WindowTranslucency.*;
public class TranslucentWindowDemo extends JFrame {
public TranslucentWindowDemo() {
super("TranslucentWindow");
setLayout(new GridBagLayout());
setSize(300,200);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Add a sample button.
add(new JButton("I am a Button"));
}
public static void main(String[] args) {
// Determine if the GraphicsDevice supports translucency.
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice Gd = ge.getDefaultScreenDevice();
//If translucent windows aren't supported, exit.
if (!Gd.isWindowTranslucencySupported(TRANSLUCENT)) {
System.err.println(
"Translucency is not supported");
System.exit(0);
}
JFrame.setDefaultLookAndFeelDecorated(true);
// Create the GUI on the event-dispatching thread
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
TranslucentWindowDemo tw = new TranslucentWindowDemo();
// Set the window to 55% opaque (45% translucent).
tw.setOpacity(0.55f);
// Display the window.
tw.setVisible(true);
}
});
}
}
Regardez ici pour plus d'informations.
Vous pouvez essayer ceci si vous utilisez un JPanel: jPanel1.setOpaque (false);