Rumah >Java >javaTutorial >Mengapakah Mengemas kini Siri JFreeChart Secara Dinamik Menyebabkan Pengecualian 'Indeks Di Luar Had'?
Ralat rawak semasa menukar siri menggunakan JFreeChart
Pengenalan
Soalan ini meneroka masalah yang dihadapi semasa cuba mengemas kini siri secara dinamik dalam graf JFreeChart. Pelaksanaan asal menghasilkan pengecualian dan paparan data yang salah.
Masalah
Kod yang disediakan bertujuan untuk mengubah suai siri data dalam urutan, tetapi ia menemui "Siri indeks keluar pengecualian" dan "indeks di luar sempadan". Paparan graf juga tidak berfungsi. Sebab ralat ini adalah penyegerakan yang tidak betul dan penggunaan DateAxis yang tidak sesuai.
Penyelesaian
Pendekatan yang betul adalah untuk mengemas kini set data daripada kaedah proses() bagi seorang SwingWorker. Selain itu, NumberAxis harus digunakan untuk domain dan bukannya DateAxis. Berikut ialah coretan kod yang disemak yang menunjukkan penyelesaian ini:
private XYSeries series = new XYSeries("Result"); ... @Override protected void process(List<Double> chunks) { for (double d : chunks) { label.setText(df.format(d)); series.add(++n, d); } }
Perbincangan
Menggunakan SwingWorker memastikan penyegerakan yang betul dan membolehkan set data dikemas kini dengan selamat dari dalam pekerja benang. NumberAxis sesuai untuk domain kerana paksi X mewakili bilangan lelaran, bukan tempoh masa.
Pendekatan Alternatif
Pendekatan alternatif ialah menggunakan DynamicTimeSeriesCollection . Walau bagaimanapun, kaedah ini tidak sesuai apabila domain paksi-X berdasarkan lelaran, bukan tempoh masa dan memerlukan kemas kini apabila pengiraan selesai, bukan pada selang masa yang tetap.
Nota Tambahan
Coretan kod yang disediakan mencipta carta garisan yang memplot kemajuan pengiraan pada paksi Y. Paksi-X mewakili nombor lelaran. Carta dikemas kini secara dinamik semasa pengiraan berlangsung.
Atas ialah kandungan terperinci Mengapakah Mengemas kini Siri JFreeChart Secara Dinamik Menyebabkan Pengecualian 'Indeks Di Luar Had'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!