เมื่อเร็ว ๆ นี้ฉันต้องการใช้แผนภูมิเส้นโค้งแบบเรียลไทม์ ฉันพบว่ามันออนไลน์ มีสองวิธีในการใช้งาน หนึ่งคือตัวอย่างอย่างเป็นทางการของ JFreechart Memoryusagedemo.java ผ่านคลาสภายในที่ใช้ java.swing.timer ข้อมูลเรียลไทม์จะถูกเพิ่มลงในชุดเวลาในผู้ฟัง เนื่องจากตัวจับเวลาจะดำเนินการตามเวลาจริงจึงไม่มีปัญหากับวิธีนี้ คุณสามารถอ้างถึงรหัส
อีกวิธีหนึ่งคือการใช้อินเทอร์เฟซที่รันได้ของคลาสเรียลไทม์ ในวิธีการเรียกใช้ () ข้อมูลเรียลไทม์จะถูกเพิ่มลงในชุดเวลาผ่านลูปที่ไม่มีที่สิ้นสุด ต่อไปนี้เป็นรหัสการใช้งานที่ง่ายกว่า:
//realtimechart.java นำเข้า org.jfree.chart.chartfactory; นำเข้า org.jfree.chart.chartpanel; นำเข้า org.jfree.chart.jfreechart; นำเข้า org.jfree.chart.axis.valueAxis; นำเข้า org.jfree.chart.plot.xyplot; นำเข้า org.jfree.data.time.millisecond; นำเข้า org.jfree.data.time.timeseries; นำเข้า org.jfree.data.time.timeseriescollection; Public Class RealTimeChart ขยาย ChartPanel ใช้งาน Runnable {Timeseries แบบคงที่ส่วนตัว; มูลค่าส่วนตัวยาว = 0; Public RealTimeChart (String ChartContent, String Title, String yaxisName) {super (createchart (ChartContent, ชื่อ, yaxisname)); } ส่วนตัวคงที่ JFreeChart CreateChart (String ChartContent, String Title, String YaxisName) {// สร้างชุดเวลาอนุกรมเวลา Timeseries = Timeseries ใหม่ (ChartContent, Millisecond.class); TimeseriesCollection TimeseriesCollection = New TimeseriesCollection (Timeseries); JFreeChart JFreeChart = ChartFactory.CreateTimeSeriesChart (ชื่อเรื่อง "TimeseriesCollection (วินาที), YaxisName, Timeseriescollection, จริง, จริง, เท็จ); xyplot xyplot = jfreechart.getxyplot (); // // การตั้งค่าข้อมูล onormal valueaxis.setautoRange (จริง); //valueaxis.setRange(0.0d,200d); return jfreechart; System.out.println (Math.random ()*20+80); { / ** * @param args * / โมฆะคงที่หลัก (สตริง [] args) {jframe frame = new jframe ("ทดสอบแผนภูมิ"); frame.setVisible (จริง) (เธรดใหม่ (RTCP)). start ();มีปัญหากับทั้งสองวิธีนั่นคือทุกครั้งที่มีการใช้กราฟจะต้องเขียนใหม่เนื่องจากข้อมูลแบบเรียลไทม์ไม่สามารถส่งผ่านพารามิเตอร์ ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะผ่านข้อมูลแบบเรียลไทม์ผ่านวิธี SetXXX () เพื่อให้คลาสการวาดเส้นโค้งแบบเรียลไทม์สามารถห่อหุ้มได้และเพียงแค่ผ่านพารามิเตอร์บางอย่างหรือใครมีวิธีที่ดีกว่า?
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น