2013-02-25 101 views
-1

我在我的代码中得到'线程异常“AWT-EventQueue-0”java.lang.NullPointerException''。我不知道为什么和这个例外发生在哪里。编译工作正常,但有时我在运行时遇到此错误。我能在这里得到一些帮助吗?完整的错误信息是这样的:我的代码“AWT-EventQueue-0”java.lang.NullPointerException

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2115) 
at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:2016) 
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1812) 
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161) 
at javax.swing.JComponent.paintComponent(JComponent.java:778) 
at javax.swing.JComponent.paint(JComponent.java:1054) 
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221) 
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295) 
at javax.swing.RepaintManager.paint(RepaintManager.java:1206) 
at javax.swing.JComponent._paintImmediately(JComponent.java:5169) 
at javax.swing.JComponent.paintImmediately(JComponent.java:4980) 
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770) 
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728) 
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677) 
at javax.swing.RepaintManager.access$700(RepaintManager.java:59) 
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621) 
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705) 
at java.awt.EventQueue.access$000(EventQueue.java:101) 
at java.awt.EventQueue$3.run(EventQueue.java:666) 
at java.awt.EventQueue$3.run(EventQueue.java:664) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) 

部分:

class UserAgentGui extends JFrame implements ActionListener, ListSelectionListener, CinemaVocabulary { 

private JTable movieTable; 

public UserAgentGui(UserAgent a) { 
// ----------------------------------- Constructor 

    Object obj[][] = new Object[0][columnNames.length]; 
    TableModel model = new TableDataModel(obj, columnNames); 
    movieTable = new JTable(model); 
movieTable.setFillsViewportHeight(true); 
    movieTable.setPreferredScrollableViewportSize(new Dimension(320,100)); 
    movieTable.setFont(new Font("Arial", Font.PLAIN, 11)); 
} 

void displayMovies(java.util.leap.List list) { 
// ------------------------------------------- 
    String s = ""; 

    if (menu.getSelectedItem().equals(actions[1])){// <-- This is a list of movies 
     s = "Movie-databse is presented"; 
     data = new Object[list.size()][columnNames.length]; 
     for (int i = 0; i < list.size(); i++) { 
      Movie movie = (Movie)list.get(i); 
      data[i][0] = movie.getTitle(); 
      data[i][1] = movie.getYear(); 
      data[i][2] = movie.getKind(); 
      data[i][3] = 0.0; 
     } 
    TableDataModel model = (TableDataModel)movieTable.getModel(); 
    model.setData(data); 
    movieTable.setModel(model); 
    movieTable.updateUI(); 
    } 
    else { 
     s = "Score Movies"; 
    } 
    msg_text.setText(s);  
} 

// =========================== External class ============================// 

/* TableDataModel: 
* -------------- 
* External class for the definition of the tables data model, used to 
* control the display of data within the different tables 
**/ 
class TableDataModel extends AbstractTableModel { 
// ---------------------------------------------- 

    private String[] columns; 
    private Object[][] data; 

    public TableDataModel(Object[][] data, String[] columns) { 
    // ---------------------------------------------------------- Constructor 
     this.data = data; 
     this.columns = columns; 
    } 

    public int getColumnCount() { 
    // ----------------------------- Return the number of columns in the table 
     return columns.length; 
    } 

    public int getRowCount() { 
    // -------------------------- Return the number of rows in the table 
     return data.length; 
    } 

    public String getColumnName(int col) { 
    // -------------------------------------- Return the name of a column 
     return columns[col]; 
    } 

    public boolean isCellEditable(int row, int col) { 
    // ------------------------------------------------- 
      if (col == 3) { 
       return true; 
      } else { 
       return false; 
      } 
    } 

    public Object getValueAt(int row, int col) { 
    // -------------------------------------------- Return the value at a specific 
//            row and column 
     if (data.length == 0) return null; 
     return data[row][col]; 
    } 

    public Class getColumnClass(int col) { 
    // -------------------------------------- Return the class of the values held 
    //           by a column 
     Object o = getValueAt(0, col); 
     if (o == null) return columns[col].getClass(); 
     return getValueAt(0, col).getClass(); 
    } 

    public void setValueAt(Object value, int row, int col){ 
    // ------------------------------------------------------- Set the value at a  specific 
    //               row and column 
     data[row][col] = value; 
    } 

    public void setData(Object[][] data){ 
    // ------------------------------------- Update the entire data in the table 
     this.data = data; 
    } 

    Object[][] getData(){ 
    // --------------------- Return the entire data of the table 
     return data; 
    } 
}// end TableDataModel 
} 
+1

我的胡乱猜测是,你正在使用JTable的变量没有实例它.Show您的代码.. – 2013-02-25 19:14:26

+0

我们能看到你的代码? – 2013-02-25 19:14:42

+0

你可以发布你的代码吗? – 2013-02-25 19:25:22

回答

1

您可以从堆栈跟踪看到它正试图吸引你的屏幕内容。也许某些东西在该屏幕或其中一个组件上未正确初始化。

1

Object obj[][] = new Object[0][columnNames.length];
您已设置obj的第一个尺寸大小为0
应该Object obj[][]= new Object[1][columnNames.length]

+0

+1只有一个问题:-) – mKorbel 2013-02-25 20:15:33

+0

lol..yeah..bit耗尽....; – 2013-02-25 20:19:46

1

我在线程得到一个'异常 “AWT-EventQueue的 - 0” 的java .lang.NullPointerException''在我的代码中。我不知道为什么和发生这种异常的地方。编译工作正常,但有时 我在运行时出现此错误。我能在这里得到一些帮助吗?完整的错误 消息是这样的:

  • 这个问题不回答的根本,为更好地帮助越早张贴SSCCE,短,可运行,编译,所有的自定义类硬编码到本地变量所需

  • 你混合两种XxxTableModels,没有理由采取TableDataModel模型从TableModel的

  • TableModel的是un_know从这个代码

  • TableDataModel不被添加到可见的JTable,

  • 空隙displayMovies(java.util.leap.List列表){是不标准的Java进口

  • movieTable.updateUI();将在你创建自己的BasicTableUI的情况下工作,但这部分没有与XxxTableModel和代码发布在这里,

  • updateUI()是UIManager和Look and Feel的方法,不用于显示数据共享模式到屏幕