Java 7中方法包()中的NullPointerException
我已经用NetBeans创建了Swind应用程序。在表格中,我添加了自己的JList:Java 7中方法包()中的NullPointerException,java,swing,nullpointerexception,Java,Swing,Nullpointerexception,我已经用NetBeans创建了Swind应用程序。在表格中,我添加了自己的JList: public class JStaticMessagesList extends JList<StaticMessagePanel> implements StaticMessages<StaticMessagePanel> { private JStaticMessagesList.MyListModel messages = new MyListModel(); private
public class JStaticMessagesList extends JList<StaticMessagePanel> implements StaticMessages<StaticMessagePanel> {
private JStaticMessagesList.MyListModel messages = new MyListModel();
private final StaticMessagesForm messgeForm;
public JStaticMessagesList(StaticMessagesForm messgeForm) {
this.messgeForm = messgeForm;
}
public JStaticMessagesList(StaticMessagesForm messgeForm, StaticMessages<StaticMessage> staticMessages) {
this(messgeForm);
for (StaticMessage msg : staticMessages) {
messages.addElement(new StaticMessagePanel(messgeForm, msg));
}
}
@Override
public void add(StaticMessagePanel msg) {
messages.addElement(msg);
}
@Override
public void deleteStaticMessage(StaticMessagePanel msg) {
messages.removeElement(msg);
}
@Override
public Iterator<StaticMessagePanel> iterator() {
return messages.iterator();
}
@Override
public ListModel<StaticMessagePanel> getModel() {
return null;
}
@Override
public final void setModel(ListModel<StaticMessagePanel> model) {
if (model instanceof MyListModel) {
super.setModel(model);
}
}
public class MyListModel extends DefaultListModel<StaticMessagePanel> implements Iterable<StaticMessagePanel> {
@Override
public Iterator<StaticMessagePanel> iterator() {
return new MyModelIterator(this);
}
private class MyModelIterator implements Iterator<StaticMessagePanel> {
private int idx = 0;
private final MyListModel model;
private MyModelIterator(MyListModel model) {
this.model = model;
}
@Override
public boolean hasNext() {
return model.getSize() > idx + 1;
}
@Override
public StaticMessagePanel next() {
return model.get(idx++);
}
@Override
public void remove() {
throw new UnsupportedOperationException("Removing with iterator is not supported!");
}
}
}
}
public类jstaticMessageList扩展JList实现StaticMessages{
私有JStaticMessageList.MyListModel消息=新建MyListModel();
私有最终静态消息表单消息表单;
公共JStaticMessageList(StaticMessagesForm消息表单){
this.messgeForm=messgeForm;
}
public JStaticMessagesList(StaticMessagesForm消息表单,StaticMessages StaticMessages){
这(messgeForm);
用于(StaticMessage消息:staticMessages){
messages.addElement(新的StaticMessagePanel(messgeForm,msg));
}
}
@凌驾
公共无效添加(StaticMessagePanel消息){
消息。添加元素(msg);
}
@凌驾
public void deleteStaticMessage(StaticMessagePanel消息){
messages.removelement(msg);
}
@凌驾
公共迭代器迭代器(){
返回消息。迭代器();
}
@凌驾
公共ListModel getModel(){
返回null;
}
@凌驾
公共最终作废集合模型(列表模型模型){
if(MyListModel的模型实例){
super.setModel(model);
}
}
公共类MyListModel扩展DefaultListModel实现Iterable{
@凌驾
公共迭代器迭代器(){
返回新的MyModelIterator(此);
}
私有类MyModelIterator实现了迭代器{
私有整数idx=0;
私有模式;
私有MyModelIterator(MyListModel模型){
this.model=模型;
}
@凌驾
公共布尔hasNext(){
返回model.getSize()>idx+1;
}
@凌驾
public StaticMessagePanel next(){
returnmodel.get(idx++);
}
@凌驾
公共空间删除(){
抛出新的UnsupportedOperationException(“不支持使用迭代器删除!”);
}
}
}
}
在添加了我的组件而不是普通的JList之后,我遇到了非常严重的异常,我不知道如何处理它。另外,我很确定问题出在这个组件上,因为当我移除它时,一切都正常
Stacttrace:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1342)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1311)
at javax.swing.plaf.basic.BasicListUI.getPreferredSize(BasicListUI.java:578)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1660)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:790)
at java.awt.Container.layout(Container.java:1503)
at java.awt.Container.doLayout(Container.java:1492)
at java.awt.Container.validateTree(Container.java:1688)
at java.awt.Container.validateTree(Container.java:1697)
at java.awt.Container.validateTree(Container.java:1697)
at java.awt.Container.validateTree(Container.java:1697)
at java.awt.Container.validateTree(Container.java:1697)
at java.awt.Container.validateTree(Container.java:1697)
at java.awt.Container.validate(Container.java:1623)
at java.awt.Container.validateUnconditionally(Container.java:1660)
at java.awt.Window.pack(Window.java:817)
at com.p.staticmessages.gui.StaticMessagesForm.initComponents(StaticMessagesForm.java:319)
at com.p.staticmessages.gui.StaticMessagesForm.<init>(StaticMessagesForm.java:37)
at com.p.staticmessages.gui.StaticMessagesForm.<init>(StaticMessagesForm.java:27)
at com.p.staticmessages.gui.StaticMessagesForm$14.run(StaticMessagesForm.java:411)
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)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1342)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1311)
at javax.swing.plaf.basic.BasicListUI.getPreferredSize(BasicListUI.java:578)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1660)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:790)
at java.awt.Container.layout(Container.java:1503)
at java.awt.Container.doLayout(Container.java:1492)
at java.awt.Container.validateTree(Container.java:1688)
at java.awt.Container.validateTree(Container.java:1697)
at java.awt.Container.validateTree(Container.java:1697)
at java.awt.Container.validateTree(Container.java:1697)
at java.awt.Container.validateTree(Container.java:1697)
at java.awt.Container.validateTree(Container.java:1697)
at java.awt.Container.validate(Container.java:1623)
at java.awt.Window.dispatchEventImpl(Window.java:2711)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
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.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
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)
线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常
位于javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1342)
位于javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1311)
位于javax.swing.plaf.basic.BasicListUI.getPreferredSize(BasicListUI.java:578)
位于javax.swing.JComponent.getPreferredSize(JComponent.java:1660)
位于javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:790)
位于java.awt.Container.layout(Container.java:1503)
位于java.awt.Container.doLayout(Container.java:1492)
位于java.awt.Container.validateTree(Container.java:1688)
位于java.awt.Container.validateTree(Container.java:1697)
位于java.awt.Container.validateTree(Container.java:1697)
位于java.awt.Container.validateTree(Container.java:1697)
位于java.awt.Container.validateTree(Container.java:1697)
位于java.awt.Container.validateTree(Container.java:1697)
位于java.awt.Container.validate(Container.java:1623)
在java.awt.Container.validateUnconditional上(Container.java:1660)
位于java.awt.Window.pack(Window.java:817)
位于com.p.staticmessages.gui.StaticMessagesForm.initComponents(StaticMessagesForm.java:319)
位于com.p.staticmessages.gui.StaticMessagesForm。(StaticMessagesForm.java:37)
位于com.p.staticmessages.gui.StaticMessagesForm。(StaticMessagesForm.java:27)
位于com.p.staticmessages.gui.StaticMessagesForm$14.run(StaticMessagesForm.java:411)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)中
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
在java.awt.EventQueue.access$000(EventQueue.java:101)
在java.awt.EventQueue$3.run(EventQueue.java:666)
在java.awt.EventQueue$3.run(EventQueue.java:664)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:128)
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:117)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
线程“AWT-EventQueue-0”java.lang.NullPointerException中出现异常
位于javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1342)
位于javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1311)
位于javax.swing.plaf.basic.BasicListUI.getPreferredSize(BasicListUI.java:578)
位于javax.swing.JComponent.getPreferredSize(JComponent.java:1660)
位于javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:790)
位于java.awt.Container.layout(Container.java:1503)
位于java.awt.Container.doLayout(Container.java:1492)
位于java.awt.Container.validateTree(Container.java:1688)
位于java.awt.Container.validateTree(Container.java:1697)
位于java.awt.Container.validateTree(Container.java:1697)
位于java.awt.Container.validateTree(Container.java:1697)
位于java.awt.Container.validateTree(Container.java:1697)
位于java.awt.Container.validateTree(Container.java:1697)
位于java.awt.Container.validate(Container.java:1623)
位于java.awt.Window.dispatchEventImpl(Window.java:2711)
位于java.awt.Component.dispatchEvent(Component.java:4687)
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
在java.awt.EventQueue.access$000(EventQueue.java:101)
在java.awt.EventQueue$3.run(EventQueue.java:666)
在java.awt.EventQueue$3.run(EventQueue.java:664)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
在java.awt.E
@Override
public ListModel<StaticMessagePanel> getModel() {
return null;
}