2010-10-05 77 views
0
public class MainFrame extends JFrame { 
    public DefaultTableModel historyModel; 
    public DefaultTableModel dataModel; 
    public JTable historyTable; 
    public JTable dataTable; 
    public JTableHeader header; 

private void createUI() { 
     browsersTabbedPane = new BrowsersTabbedPane(); 
     add(browsersTabbedPane.getTabPane(), CENTER); 
     addDefaultBrowserComponentForTabbedPane(); 
     createActions(); 
     add(createToolBar(), BorderLayout.NORTH); 
     add(createStatusBar(), BorderLayout.SOUTH); 
     add(createDataView(dataModel,dataTable, header), BorderLayout.PAGE_END); 
     add(createHistoryView(historyModel,historyTable), BorderLayout.LINE_END); 
     add(createBigButton(browsersTabbedPane.getActiveBrowser(),dataModel,historyModel,dataTable,historyTable), BorderLayout.WEST); 

     createMenuBar(); 
    } 

private JPanel createDataView(DefaultTableModel dataModel, JTable dataTable, JTableHeader header){ 
     JPanel panel = new JPanel(); 

     Object data[][] = {{"001","vinod","Bihar","India","Biology","65","First"}, 
          {"002","Raju","ABC","Kanada","Geography","58","second"}, 
          {"003","Aman","Delhi","India","computer","98","Dictontion"}, 
          {"004","Ranjan","Bangloor","India","chemestry","90","Dictontion"}, 
          {"004","Ranjan","Bangloor","India","chemestry","90","Dictontion"}}; 
     Object col[] = {"Roll","Name","State","country","Math","Marks","Grade"}; 
     dataModel = new DefaultTableModel(data,col); 
     dataTable = new JTable(dataModel); 

     dataTable.setPreferredScrollableViewportSize(new Dimension(1500,100)); 
     header = dataTable.getTableHeader(); 
     header.setBackground(Color.yellow); 
     JScrollPane pane = new JScrollPane(dataTable); 
     dataTable.setAutoResizeMode(JTable.WIDTH); 
     dataTable.doLayout(); 
     panel.add(pane); 
     return panel; 

    } 

    private JPanel createBigButton(Browser browser, DefaultTableModel dataModel, DefaultTableModel historyModel, JTable dataTable, JTable historyTable){ 
     JPanel panel = new JPanel(); 
     JButton bigbutton = new JButton("Big Button"); 
     bigbutton.addActionListener(new BigButtonListener(browser,dataModel,historyModel,dataTable, historyTable)); 
     panel.add(bigbutton); 
     return panel; 
    } 

    class BigButtonListener implements ActionListener{ 
     Image screenshot; 
     Browser bigbrowser; 

     BigButtonListener(Browser browser, DefaultTableModel dataModel, DefaultTableModel historyModel, JTable dataTable, JTable historyTable) { 
      screenshot = browser.toImage(true); 
      bigbrowser = browser; 
      historyModel = historyModel; 
      dataModel = dataModel; 
      dataTable = dataTable; 
      historyTable = historyTable; 
      //table1.addRow 
     } 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      // save current image   
      //historyModel.insertRow(2,new Object[]{"Sushil"}); 
      System.out.println(historyTable.getRowCount()); 

     } 
    } 
} 

单击Big按钮时会出现此问题。它应该输出historyTable(这是公开的)的总行数。Java:线程“AWT-EventQueue-0”中的异常java.lang.NullPointerException

然而,这是堆栈跟踪输出

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at com.my.demo.MainFrame$BigButtonListener.actionPerformed(MainFrame.java:356) 
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

回答

2

你永远不会初始化historyTable一个非空值。

+0

哎呀....意识到了这一点愚蠢的错误。谢谢。 – KJW 2010-10-06 00:00:00

0

您使用的是本地类变量historyTable设置本身,这反过来本身设置为null,因为原来的值为空,因此不允许进行检索所需的数据

相关问题