Graphics2Dで画像を描画した半透明のJPanelを実装したJavaコードがあります。この画像は、JFrame全体に80%不透明な白い長方形を含むPNGです。次に、データを表示するためにJTextPaneを追加する必要があります(アプリパッケージBTWのカスタムフォントを使用するように設定しました)が、半透明にすることはできません。白い背景は不透明で(textPane.setOpaque(false);
設定しても)、私のJFrameの透明度は少し役に立たない...Wichはクールではありません。
だから私は私を驚かせるこの白い背景を取り除く方法を探しています。
私は多くのグーグル検索をロールバックしましたが、私が見つけたものはすべて、JTextPaneの不透明度を設定するためのブール値でした。また、Graphics 2Dを使用して、カスタムJTextPaneを作成し、その背景をオーバーライドできることもわかりましたが、機能しませんでした...私はすでにこれらすべてを試しました。
public class MyWindow extends JFrame {
private static class MyTextPane extends JTextPane {
public MyTextPane() {
super();
setText("Hello World");
setOpaque(false);
setBackground(new Color(0,0,0,0));
}
@Override
protected void paintComponent(Graphics g) {
g.setColor(new Color(0, 0, 0, 0));
g.fillRect(0, 0, getWidth(), getHeight());
super.paintComponent(g);
}
}
public static void main(String[] args) {
MyTextPane textPane = new MyTextPane();
JPanel panel = new JPanel() {
private static final long serialVersionUID = 1L;
@Override
protected void paintComponent(Graphics g) {
try {
Image img = ImageIO.read(new File("images/bg.png"));
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
} catch (IOException e) {
e.printStackTrace();
}
if (g instanceof Graphics2D) {
final int R = 240;
final int G = 240;
final int B = 240;
Paint p =
new GradientPaint(0.0f, 0.0f, new Color(R, G, B, 0),
0.0f, getHeight(), new Color(R, G, B, 0), true);
Graphics2D g2d = (Graphics2D)g;
g2d.setPaint(p);
g2d.fillRect(0, 0, getWidth(), getHeight());
}
}
};
panel.add(textPane);
setContentPane(panel);
}
(Oracleの説明でJFrameを半透明にしました。ここにあります)ありがとうございます。