gpt4 book ai didi

java - JPanel 遮挡 BufferedImage

转载 作者:行者123 更新时间:2023-11-29 06:44:54 36 4
gpt4 key购买 nike

我无法找出为什么会出现以下问题:在使用“extends Frame”创建窗口的程序中,我可以使用 BufferedImage 绘制到 Frame(而非 JFrame)的图形上下文,并且它看起来很好。但是,当我声明 JPanel , 所有由 BufferedImage 绘制的文本变得模糊(不完全,但半透明且难以阅读),即使我不添加 JPanelJFrame .

这是代码的简化版本:

import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;
import java.awt.image.*;
import javax.swing.*;

public class MyProgram extends Frame {

static Frame f;
static Timer timer;

public static void main(String[] args) {

f = new Frame();
f.setSize(400, 200);
f.setResizable(false);
f.setVisible(true);

f.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent e) {

drawScreen();
}
});

drawScreen();
}

public static void drawScreen() {

BufferedImage off_i = new BufferedImage(f.getWidth(), f.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics g = off_i.createGraphics();

g.setColor(new Color(50, 50, 50));
g.drawString("Hit any key; why does this text change?", 15, f.getHeight() - 10);

Graphics off_g = f.getGraphics();
off_g.drawImage(off_i, 0, 0, null);

JPanel panel = new JPanel();
}
}

如果我添加了 JPanel,我也许可以理解看到问题出现了到 JFrame并且没有对其可见性设置任何限制,但甚至创建了 JPanel给出了那个问题,这对我来说似乎很奇怪。

基本上,我在这里要做的是采用现有的程序,该程序在没有 JPanel 的情况下运行良好。 ,我想给它添加一个 JTextArea这样我就可以接受复制/粘贴文本来修改程序的显示。

我对 Java 的理解有点参差不齐,因为我主要是出于兴趣而不是正式学习它,但我一直在努力学习更多知识。感谢您的帮助!

更新:我发现只有在声明 JPanel 之后再次调用 draw 函数时才会出现此问题,但我仍然不明白为什么会这样或如何绕过它。

最佳答案

更好的办法是把图片放到JLabelhow ot use Icon

请阅读Using Swing Components以及如何LayoutManagers作品

java2s.com 上的大量示例

关于java - JPanel 遮挡 BufferedImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6567906/

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