这个问题困扰着我很多。
假设我有两个名为DrawProfile
和PlotData
的不同类。这些类扩展JComponent
。我还有一个名为JPanel
的个人资料。我想先将DrawProfile
添加到我的个人资料JPanel
,然后我想添加PlotData
(DrawProfile
和PlotData
类实施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()
方法,其中draw(Graphics g)
内部有一个paintComponent()
方法,以便绘制多个不同颜色的矩形。我在AlphaComposite
方法中将0.5f
设置为paintComponent()
。
在PlotData
课程中,我使用了JFreechart
(XYplot),此课程扩展了JPanel
。在这个课程中,有一个paintComponent()
方法可以绘图(我不会在这里做任何奇怪的事情)。在paintComponent()
内,我无法触及AlphaComposite
(事实上,它是1.0f
)。
通过上面的方式,我能够完成我的工作。但正如您在我提供的链接中看到的那样,PlotData对象没有鲜明的颜色。
请注意PlotData
扩展' JPanel',而DrawProfile
延伸JComponents
。
如果我错了,请纠正我。似乎当我们将JComponents
个对象添加到JPanel
时,第一个添加的JComponent
对象将始终位于后面添加的对象的顶部。例如,在我提供的示例中,我首先添加了DrawProfile
,因此这个类位于PlotData
的顶部,我将其添加为我的第二个JComponent
对象。
答案 0 :(得分:0)
实际上我找到了解决方案。 JFreechart
创建默认背景以绘制图表。我在paintComponent()
的{{1}}中做了什么,我设置PlotData
;它解决了我的问题。