gpt4 book ai didi

java - JFrame - 在透明背景上绘制图形?

转载 作者:行者123 更新时间:2023-12-01 05:08:35 30 4
gpt4 key购买 nike

我正在尝试制作一个未装饰的透明 JFrame,然后在其上绘制一些图形。如果我扩展 JFrame,将 undecorated 设置为 true,并覆盖 Paint,我可以制作一个透明的 JFrame。像这样:

public class MainFrame extends JFrame {
public static void main(String[] args) throws Exception {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainFrame frame = new MainFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}


public MainFrame() {
setTitle("ASDF");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setUndecorated(true);
setBounds(0, 0, 200, 200);
}

public void paint(Graphics g){
g.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 20));
g.drawString("ASDF", 100, 100);
}
}

问题是,当我尝试在其上绘制某些内容时,我无法清除为另一次重画绘制的内容。就像本例中一样,文本保留了绘制时的背景。因此,如果我在框架后面移动一个窗口,它看起来很奇怪,因为框架本身具有旧的背景。我尝试了 AlphaComposite.Clear,但这只产生了黑色背景。我能做什么?

最佳答案

If I extend JFrame, set undecorated to true, and override paint with, I can make a transparent JFrame.

我不这么认为。你只是画画而不关心背景,背景很快就会消失。如果您想知道如何在 java 中制作透明窗口,请使用 Stackoverflow:搜索 [java] 透明窗口 。这应该可以帮助您创建这样一个窗口,但这是一项相当复杂的任务:Transparent Window

关于java - JFrame - 在透明背景上绘制图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12378241/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com