gpt4 book ai didi

java - 未绘制父面板

转载 作者:行者123 更新时间:2023-11-30 07:19:26 25 4
gpt4 key购买 nike

我有以下 Java Swing 问题:当父面板被另一个具有透明背景的面板覆盖时,它不会被绘制(即 paintComponent() 甚至没有被调用)。

我想如果子面板不是透明的,这种行为是正常的,但这里是一个问题,因为父面板提供图片作为背景。

可能不相关但您永远不知道:子面板是 JFreeChart 库中的 ChartPanel(扩展 JPanel),父面板也是 JPanel 扩展,特此为 paintComponent 代码:

@Override

public void paintComponent(Graphics g) {
try {
long start = System.currentTimeMillis();

//Sets waiting cursor
GuiHelper.setCursorOnEntireWindow(Cursor.WAIT_CURSOR);

//Paints parent
super.paintComponent(g);

//Paints background and other elements
g.drawImage(generateBackground(getWidth(), getHeight()), 0, 0, getWidth(), getHeight(), this);

long end = System.currentTimeMillis();
System.out.println("Chart paint took: "+(end-start)+"ms");
}
finally {
//Removes waiting cursor
GuiHelper.setCursorOnEntireWindow(Cursor.getDefaultCursor().getType());
}

}

任何帮助/提示都将不胜感激,因为我已经研究了几个小时。

谢谢!

最佳答案

a parent panel doesn't get painted (i.e. paintComponent() not even called) when it is covered by another panel which has a transparent background

不确定您如何设置 ChartPanel 的透明背景。我认为你只需要使用:

childPanel.setOpaque(false);

如果这不起作用,请查看 Background With Transparency有关如何在子/父组件之间进行绘制的更多信息。

关于java - 未绘制父面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14653275/

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