У меня есть программа, которая создает визуализации данных для фондовых данных в туманности Затмение. Визуализация встроена в 2 отдельные оболочки windows. Я хочу взять эти оболочки и создать файл изображения JPG, используя ImageIO и Buffered Readers. Я пытался использовать встроенные функции в Graphics2d, но он возвращает неопределенные типы с реализацией на основе JFrame, которую я пробую на своих оболочках. Вот код, который у меня есть для одного из графиков оболочки (они одинаковы, за исключением исходного файла). Код немного длинный, поэтому у меня есть комментарий со звездочками, где я получаю сообщение об ошибке:
public class CovidPlots {
public static void main(String[] args) {
//Data generation code
//Create shell window
final Shell shell = new Shell();
shell.setSize(300, 250);
shell.open();
//Define axis for plot- code omitted
//Create bridge between Lightweight system, SWT, and draw2d
final LightweightSystem lws = new LightweightSystem(shell);
XYGraph xyGraph = new XYGraph();
xyGraph.setTitle("DJIA PPS During COVID-19 Outbreak");
//Set Axis Bounds- code omitted
//Plot graph
lws.setContents(xyGraph);
//Create trace data providers
CircularBufferDataProvider traceDataProvider = new CircularBufferDataProvider(false);
CircularBufferDataProvider traceDataProvider2 = new CircularBufferDataProvider(false);
traceDataProvider.setBufferSize(len);
traceDataProvider.setCurrentXDataArray(temp);
traceDataProvider.setCurrentYDataArray(opening);
traceDataProvider2.setBufferSize(len);
traceDataProvider2.setCurrentXDataArray(temp);
traceDataProvider2.setCurrentYDataArray(closing);
//Build graph
Trace trace = new Trace("Opening DJI Values", xyGraph.primaryXAxis, xyGraph.primaryYAxis, traceDataProvider);
Trace trace2 = new Trace("Closing DJI Values", xyGraph.primaryXAxis, xyGraph.primaryYAxis, traceDataProvider2);
trace.setPointStyle(PointStyle.CIRCLE);
trace.setTraceColor(ColorConstants.red);
trace2.setPointStyle(PointStyle.CIRCLE);
trace2.setTraceColor(ColorConstants.darkGreen);
trace2.setLineWidth(0);
//Draw
xyGraph.addTrace(trace);
xyGraph.addTrace(trace2);
//Keep shell open
Display display = Display.getDefault();
while(!shell.isDisposed()) {
if(!display.readAndDispatch()) {
display.sleep();
}
}
//Save image as jpeg
try {
BufferedImage image = new BufferedImage(300, 250, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2d = image.createGraphics(); //**error: createGraphics is undefined for type Buffered image
shell.getPaint(graphics2d); //**Similar error with type graphics2d
ImageIO.write(image, "jpg", new File("C:\\Users\\zrr81\\Downloads\\COVID-19_Analysis\\COVID-19_Chart.jpg"));
}
catch (Exception e) {
System.out.println("Oops");
}
}