J'ai une classe UITextPane
qui s'étend JTextPane
et redéfinit la méthode paintComponent(g)
, comme ceci:Java: JTextPane ne charge pas transparent?
package com.ritcat14.GotYourSix.graphics.UI;
import com.ritcat14.GotYourSix.util.ImageUtil;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JTextPane;
public class UITextPane extends JTextPane {
private BufferedImage img;
public UITextPane() {
img = ImageUtil.getImage("/ui/panels/helpBackground.png");
}
@Override
public void paintComponent(Graphics g) {
g.drawImage(img,0,0,null);
super.paintComponent(g);
}
}
Puis dans ma classe Game.java
, créer et ajouter le composant à l'JFrame en utilisant GridBagConstraints
comme tel:
game.textPane = new UITextPane();
game.textPane.setEditable(false);
game.textPane.setForeground(new Color(0xffC20F1B));
game.textPane.setBackground(new Color(1,1,1, (float) 0.01)); //Set transparent so we can see the text
//create and set font
....
JScrollPane sp = new JScrollPane(game.textPane);
sp.setPreferredSize(new Dimension(400,400));
c.anchor = GridBagConstraints.LINE_END;
game.frame.add(sp, c);
Le textPane.paintComponent(g)
est appelé à chaque fois que la méthode de rendu du jeu est appelée.
Mon problème: L'image que j'ai stockée est simplement une image transparente 400x400
que je dessine au JTextPane
dans la classe UITextPane
. Cependant, le résultat se présente comme suit:
Et après avoir chanté dans le fond devient noir comme ceci:
Toutes les idées que je fais mal/ne pas faire ? Merci
pourriez-vous s'il vous plaît expliquer/montrer comment l'utiliser? –
Désolé, sur mon téléphone en ce moment ... Faites simplement setOpaque (false) sur le composant que vous voulez être transparent. Veillez à ce que les parents soient également transparents si nécessaire. – Sharcoux