线程“AWT-EventQueue-0”中的异常java.lang.IllegalArgumentException,为什么?

时间:2016-12-05 22:09:41

标签: java swing

我创建了一个按钮来复制选定的像素颜色。 如果我先单击图片(获取像素值),然后单击“复制”按钮,它工作正常。但是,如果我先点击“复制”按钮,我将收到此错误。 有什么想法吗?

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Pixel value is null
    at a9.ImageEditorController.copy(ImageEditorController.java:81)
    at a9.PixelInspectorTool.actionPerformed(PixelInspectorTool.java:95)
    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.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(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)
public void copy() {
    Pixel selectedB = model.getSelected();
    if (selectedB == null) {
        throw new IllegalArgumentException("cannot be null");  //line 81
    }
    PaintBrushToolUI pbtUI = (PaintBrushToolUI) paint_brush_tool.getUI();
    pbtUI.changeView(selectedB);
}

public void actionPerformed(ActionEvent arg0) {
    for (ToolButtonListener t : tList) {
        t.copy();         // this is line 95
        System.out.println("Copying");
    }
}

1 个答案:

答案 0 :(得分:0)

实际上你收到这条错误消息是因为你把它扔到了这里:

var isScrolling = false;

$(window).scroll(function() {
    isUserScrolling = true;
    clearTimeout($.data(this, 'scrollTimer'));
    $.data(this, 'scrollTimer', setTimeout(function() {
        // do something
        isUserScrolling = false;
    }, 250));
});

 function loadConversation(){
     if(!isUserScrolling){
        $.get("get-conversation.php?to_hash=00000", function(data, status){
           document.getElementById("conversation").innerHTML = data;

           ///Scrolling to bottom
           var container_height = $( "#contain" ).height();
            $( "div.scrollbar" ).scrollTop( container_height+1000000000000 );


       });
    }
    setTimeout(loadConversation,200);       
}
loadConversation();`

要解决您的问题,您可以在此处检查您的模型是否为空:

 if (selectedB == null) {
   // code bellow throws your exception...
   throw new IllegalArgumentException("cannot be null");  //line 81
}

或者您可以使用copy方法检查对象是否为null,如下所示:

 for(ToolButtonListener t:tList) {
     //check here if it's null for example 
    if(model.getSelected() != null){
       t.copy();         // this is line 95
       System.out.println("Copying");
    }
}

} 发生此错误是因为在您单击其他按钮以创建颜色之前,第一个(复制按钮)没有要复制的“源”。 您也可以使复制按钮处于非活动状态,直到您单击其他按钮。你的问题有各种解决方案(可能比我的好很多),这一切都取决于你想要达到的效果。