ChartPanel 未在 GUI 中注册为组件
Posted
技术标签:
【中文标题】ChartPanel 未在 GUI 中注册为组件【英文标题】:ChartPanel not registering as a component in a GUI 【发布时间】:2019-05-11 17:45:50 【问题描述】:我有以下输出。
Recursive call for org.jfree.chart.ChartPanel[chartpanelBoa
Component count 0 for org.jfree.chart.ChartPanel[chartpanelBoa
我运行以获得此输出的代码是
public void enableEverything(Container c)
Component [] p = c.getComponents();
System.out.println("Component count " + c.getComponentCount() + " for " +
c.toString().substring(0,40) );
for(Component pp : p)
pp.setEnabled(true);
if(pp instanceof Container)
System.out.println("Recursive call for " + pp.toString().substring(0,40));
enableEverything((Container) pp);
else System.out.println("No recursive call");
可以在我的 JPanel 中看到 ChartPanel,但它不会计算图表面板。我期待输出
org.jfree.chart.ChartPanel[chartpanelBoa] 的组件计数 1
在幕后计算组件的因素是什么?
【问题讨论】:
【参考方案1】:如org.jfree.chart.ChartPanel
的源代码所示,ChartPanel
是一个 JPanel
,但它不包含Component
的嵌套实例。一个handful的Swing组件被导入来处理一个context menu,tooltips等,但是封闭的JFreeChart
本身就是纯Java2D。
您似乎想在禁用图表时更改图表的视觉表示。您仍然可以在 ChartPanel
本身上调用 setEnabled()
以利用 JPanel
UI 委托。您还可以根据需要修改图表的内部;这个example 使用setBackgroundPaint()
或setBackgroundImageAlpha()
使背景变暗。
【讨论】:
是的,我希望首先获得图表面板的计数,然后更改视觉表示。我会将 enabled() 设置为 true。 听起来不错;为了比较,您可以“查看活动 Swing 容器层次结构的转储”,如 here 所示。以上是关于ChartPanel 未在 GUI 中注册为组件的主要内容,如果未能解决你的问题,请参考以下文章
未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0
win7(64)未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序
我可以为未在 PayPal 中注册的用户创建 PayPal 链式付款作为接收方吗?
从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法