2015-12-10 50 views
0

我正在NetBeans上開發一個Java應用程序。棒圖不能正常工作

我創建了一個使用JTable的條形圖的方法。

問題是條形圖不能按預期工作。

這裏是JTable代碼:

public void populateTable(){ 
    DefaultTableModel model = (DefaultTableModel) Table.getModel(); 

    model.setRowCount(0); 
    for (WorkRequest request: account.getWorkQueue().getWorkRequestList()){ 

     if(request instanceof SmartWatchWorkRequest){ 
     Object[] row = new Object[7]; 

     String condition = ((SmartWatchWorkRequest)request).getCondition(); 
     row[0] = request; 
     int respiratory = ((SmartWatchWorkRequest)request).getRespiratoryRate(); 
     row[1] = respiratory; 
     int heart = ((SmartWatchWorkRequest)request).getHeartRate(); 
     row[2] = heart; 
     int blood = ((SmartWatchWorkRequest)request).getBloodPressure(); 
     row[3] = blood; 
     float weight = ((SmartWatchWorkRequest)request).getWeight(); 
     row[4] = weight; 
     row[5] = request.getDate(); 
     row[6] = request.getTime(); 

     model.addRow(row); 
     } 
    } 
} 

這裏是條形圖代碼:

所有的
private void createChart() 
{ 
    DefaultCategoryDataset vitalSignDataset=new DefaultCategoryDataset(); 
    int selectedRow = Table.getSelectedRow(); 
    WorkRequest request = (WorkRequest) Table.getValueAt(selectedRow, 0); 

    ArrayList<WorkRequest> List = account.getWorkQueue().getWorkRequestList(); 

    for (WorkRequest vitalSign : List) { 
     if(vitalSign instanceof SmartWatchWorkRequest){ 
     vitalSignDataset.setValue(((SmartWatchWorkRequest)vitalSign).getRespiratoryRate(),"RR", ((SmartWatchWorkRequest)vitalSign).getDate()); 
     vitalSignDataset.setValue(((SmartWatchWorkRequest)vitalSign).getHeartRate(),"HR", ((SmartWatchWorkRequest)vitalSign).getDate()); 
     vitalSignDataset.setValue(((SmartWatchWorkRequest)vitalSign).getBloodPressure(),"BP", ((SmartWatchWorkRequest)vitalSign).getDate()); 
     vitalSignDataset.setValue(((SmartWatchWorkRequest)vitalSign).getWeight(),"WT", ((SmartWatchWorkRequest)vitalSign).getDate()); 
     } 
     JFreeChart vitalSignChart= ChartFactory.createBarChart3D("Vital Sign Chart", "Time Stamp", "Rate", vitalSignDataset, PlotOrientation.VERTICAL, true, false, false); 
    vitalSignChart.setBackgroundPaint(Color.white); 
    CategoryPlot vitalSignChartPlot = vitalSignChart.getCategoryPlot(); 
    vitalSignChartPlot.setBackgroundPaint(Color.lightGray); 


    CategoryPlot P=vitalSignChart.getCategoryPlot(); 
    P.setRangeGridlinePaint(Color.BLUE); 

    ChartFrame frame=new ChartFrame("Vitalsign Bar Chart", vitalSignChart); 
    frame.setVisible(true); 
    frame.setSize(500, 500); 

}} 

回答

0

首先,你的行不是同類型的對象。第一行是一個WorkRequest對象,第二行是一個整數等等。當你選擇除第一行以外的任何行時,你應該在運行時在行WorkRequest request = (WorkRequest) Table.getValueAt(selectedRow, 0);中得到一個ClassCastException。 通常模型包含一個類似對象的列表。