这个问题让我很困扰。

假设我有两个不同的类,分别称为DrawProfilePlotData。这些类扩展JComponent。我还有一个JPanel叫个人资料。我想先将DrawProfile添加到我的配置文件JPanel中,然后再添加PlotDataDrawProfilePlotData类实现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/

10-12 19:49