&引用;AWT-EventQueue-0“;java.lang.NullPointerException
我的代码中有一个“线程中的异常”AWT-EventQueue-0“java.lang.NullPointerException”。我不知道为什么会发生这种异常,也不知道发生在哪里。编译工作正常,但有时在运行时会出现此错误。我能在这里得到一些帮助吗?完整的错误消息如下:&引用;AWT-EventQueue-0“;java.lang.NullPointerException,java,swing,Java,Swing,我的代码中有一个“线程中的异常”AWT-EventQueue-0“java.lang.NullPointerException”。我不知道为什么会发生这种异常,也不知道发生在哪里。编译工作正常,但有时在运行时会出现此错误。我能在这里得到一些帮助吗?完整的错误消息如下: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at javax.swing.plaf.basic.BasicTableUI.paintC
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
}
类UserAgentGui扩展JFrame实现了ActionListener、ListSelectionListener和Cinema词汇表{
私人电影;
公共用户代理GUI(用户代理a){
//------------------------------------构造函数
Object obj[][]=新对象[0][columnNames.length];
TableModel model=新的TableDataModel(obj,columnNames);
movieTable=新JTable(型号);
可移动。setFillsViewportHeight(真);
movieTable.setPreferredScrollableViewportSize(新维度(320100));
movieTable.setFont(新字体(“Arial”,Font.PLAIN,11));
}
void displayMovies(java.util.leap.List){
// -------------------------------------------
字符串s=“”;
如果(menu.getSelectedItem().equals(actions[1]){/您可以从堆栈跟踪中看到它正试图绘制屏幕内容。可能该屏幕或其组件上的某些内容未正确初始化。
Object obj[][]=新对象[0][columnNames.length];
您已将obj的第一个尺寸设置为0。
它应该是
objectobj[][]=newobject[1][columnNames.length]
我收到一个“线程中的异常”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)
- 这个问题根本不需要回答,为了更好的帮助,请尽快发布一个SSCCE,简短、可运行、可编译,将所有自定义类硬编码到局部变量
- 您混合了两个XXXtableModel,没有理由从TableModel中获取TableDataModel
- TableModel是从这个代码中不知道的
- TableDataModel未添加到可见JTable中
- void displayMovies(java.util.leap.List){不是标准的java导入
- movieTable.updateUI();将在您创建自己的BasicTableUI的情况下工作,但这部分没有与XxxTableModel和代码发布相关的内容
- updateUI()是用于UIManager和外观的方法,而不是用于将共享模型中的数据显示到屏幕上
movieTable.updateUI();
?虽然它应该是无害的,但它并不意味着直接使用(除非您特别更改L&F)+1问题中只有一个pct:-)哈哈……是的……有点累了……)