2015-01-09 60 views
0

我有一個控制所有應用程序的主類,包括顯示所有面板。以顯示主應用面板的方法是:Java GUI面板重新驗證

private void displayMainApplicationPanel() { 
    String[] columnNames = { "Media ID", "Title", "Pricipal Actors", "Type", "Duration", "Launch Date", "Price", 
    "Status" }; 
ResultSet resultSet = databaseLogicController.showMediaInfo(); 
String[][] data = parseMediaResultSet(resultSet, 8); 

SwingUtilities.invokeLater(new Runnable() { 

    @Override 
    public void run() { 
    graphicController.showMainApplicationPanel(data, columnNames); 
    addMainApplicationPanelSearchButtonActionListener(); 
    addMainApplicationPanelSearchTextFieldKeyListener(); 
    addMainApplicationPanelShowMyIdButtonActionListener(); 
    addMainApplicationPanelBorrowMediaButtonActionListener(); 
    addMainApplicationPanelMakeInternetRezervationButtonActionListener(); 
    addMainApplicationPanelShowVHSInformationButtonActionListener(); 
    addMainApplicationPanelShowDVDInformationButtonActionListener(); 
    addMainApplicationPanelShowInternetRezervationsActionListener(); 
    addMainApplicationPanelShowClientsInformationButtonActionListener(); 
    addMainApplicationPanelInsertClientButtonActionListener(); 
    addMainApplicationPanelInsertMovieButtonActionListener(); 
    addMainApplicationPanelInsertVHSButtonActionListener(); 
    addMainApplicationPanelInsertDVDButtonActionListener(); 
    } 
}); 

}

在那個主面板中,我有一個表,該表顯示了所有當前媒體。我希望能夠通過搜索功能更新該表格。

的搜索按鈕動作監聽器的代碼是:

private void addMainApplicationPanelSearchButtonActionListener() { 
    graphicController.getMainApplicationPanel().addSearchButtonActionListener(new ActionListener() { 

    @Override 
    public void actionPerformed(ActionEvent e) { 
    String[] columnNames = { "Media ID", "Title", "Pricipal Actors", "Type", "Duration", "Launch Date", "Price", 
     "Status" }; 
    String title = graphicController.getMainApplicationPanel().getSearchTextField().getText(); 
    ResultSet resultSet = databaseLogicController.showParticularMediaInfo(title); 
    String[][] data = parseMediaResultSet(resultSet, 8); 

    graphicController.getMainApplicationPanel().setMediaTable(new JTable(data, columnNames)); 
    graphicController.getMainApplicationPanel().repaint(); 
    graphicController.getMainApplicationPanel().revalidate(); 
    graphicController.getMainFrame().repaint(); 
    graphicController.getMainFrame().revalidate(); 
    } 
}); 

}

現在,我在基於搜索條件的動作偵聽器創建一個新表,並將其設置在主應用程序面板,然後調用主畫面和主面板上的重繪和重新驗證。爲什麼不顯示新表格?

回答

0

現在,我在動作監聽器創建一個新表基礎上,搜索條件

請勿創建新表。最簡單的方法是用新的TableModel更新現有的表格:

table.setModel(...); 
0

我不使用這條線

graphicController.getMainApplicationPanel().setMediaTable(new JTable(data, columnNames)); 

你推薦你可以更好地獲得該表,然後((DefaultTableModel)myTable.getModel()).setRowCount(0);((DefaultTableModel)myTable.getModel()).addRow(new Object[]{data1, data2, ...});

+0

它給了我一個ClassCastException; – FanFan 2015-01-09 21:08:53

+0

你正在使用什麼類型的表模型?投給它 – 2015-01-09 21:11:14

+0

事情是。我沒有改變,或者有任何改變表模型的代碼。 – FanFan 2015-01-09 21:11:49