这个问题让我很困扰。
假设我有两个不同的类,分别称为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
对象。 最佳答案
其实我找到了解决方案。 JFreechart
创建默认背景以绘制图表。我在paintComponent()
的PlotData
中所做的设置是chart.setBackgroundPaint(null);
;它解决了我的问题。
关于java - 将多个透明JComponents对象添加到一个JPanel中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26873592/