ChartPanel не регистрируется как компонент в графическом интерфейсе - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть следующий вывод.

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");
}



}

ChartPanel можно увидеть в моем JPanel, однако он не будет рассчитыватьКартпанель.Я ожидаю вывод

Количество компонентов 1 для org.jfree.chart.ChartPanel [chartpanelBoa

Что находится за кулисами и учитывает компонент?

1 Ответ

0 голосов
/ 11 декабря 2018

Как показано в источнике для org.jfree.chart.ChartPanel, ChartPanel является JPanel, но не содержит вложенных экземпляров Component. горстка компонентов Swing импортируется для обработки контекстного меню , всплывающих подсказок и т. Д., Но вложенный JFreeChart сам по себе является чистым Java2D .

Похоже, вы хотите изменить визуальное представление диаграммы, когда она отключена.Вы все равно можете вызывать setEnabled() на самом ChartPanel для использования делегата JPanel UI.Вы также можете изменить внутреннюю часть диаграммы по желанию;этот пример затемняет фон, используя setBackgroundPaint() или setBackgroundImageAlpha().

...