gpt4 book ai didi

java - 将多个透明 JComponents 对象添加到一个 JPanel

转载 作者:太空宇宙 更新时间:2023-11-04 14:23:57 25 4
gpt4 key购买 nike

这个问题很困扰我。

假设我有两个不同的类,分别为 DrawProfilePlotData。这些类扩展了JComponent。我还有一个名为 profile 的 JPanel。我想首先将 DrawProfile 添加到我的配置文件 JPanel 中,然后添加 PlotData (DrawProfilePlotData 类实现 paintComponent 方法)。 DrawProfile 类将绘制一些用不同颜色填充的矩形形状。之后,就像普通绘图一样的 PlotData 将位于 DrawProfile(具有不同颜色的矩形)的顶部。我希望我的 PlotData 根据 DrawProfile 不同的彩色形状设置其背景。可以写成如下:

profile.setLayout(new OverlayLayout(profile));
profile.setPreferredSize(new Dimension(400,650));
profile.add(new DrawProfile());
profile.add(new PlotData());

请注意,我已经使用了profile.setOpaque(),但它对我没有帮助。我使用了 AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f) 作为 DrawProfile。它可以工作,但问题是散点图颜色受到 DrawProfile 对象的影响,并且颜色不清晰。你可以看到我的努力here 。最后,我将把我的主 JPanel(配置文件)添加到 JFrame 中。

编辑:对于可运行的代码,这会很困难。因为,代码可能很棘手。为了让我的问题更清楚:

DrawProfile中,我通过JComponent扩展了该类。我还实现了 paintComponent() 方法,其中 paintComponent() 内部有一个 draw(Graphics g) 方法,以便绘制多个矩形有不同的颜色。我在 paintComponent() 方法中将 AlphaComposite 设置为 0.5f

PlotData类中,我使用了JFreechart (XYplot),并且该类扩展了JPanel。在这个类中,有一个 paintComponent() 方法可以进行绘图(我在这里没有做任何奇怪的事情)。在 paintComponent() 内部,我没有触及 AlphaComposite (事实上,它是 1.0f)。

通过上述方式,我能够完成我的工作。但正如您在我提供的链接中看到的,PlotData 对象没有鲜明的颜色。

请注意,PlotData 扩展了“JPanel”,而 DrawProfile 扩展了 JComponents

如有错误,请指正。看起来,当我们将 JComponents 对象添加到 JPanel 时,第一个添加的 JComponent 对象将始终位于后来添加的对象的顶部。例如,在我提供的示例中,我首先添加了 DrawProfile,因此该类位于我的 PlotData 的顶部,我将其添加为第二个 JComponent 对象。

最佳答案

实际上我找到了解决方案。 JFreechart 创建默认背景来绘制图表。我在 PlotDatapaintComponent() 中所做的,我设置了 chart.setBackgroundPaint(null); ;它解决了我的问题。

关于java - 将多个透明 JComponents 对象添加到一个 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26873592/

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