버튼을 만들어 선택한 픽셀 색상을 복사합니다. 그림을 클릭 (픽셀 값 가져 오기) 한 다음 "복사"버튼을 클릭하면 정상적으로 작동합니다. 그러나 "복사"버튼을 먼저 클릭하면이 오류가 표시됩니다. 의견이 있으십니까?"AWT-EventQueue-0"스레드의 예외 java.lang.IllegalArgumentException, 이유가 무엇입니까?
if (selectedB == null) {
// code bellow throws your exception...
throw new IllegalArgumentException("cannot be null"); //line 81
}
당신의 문제는 당신이 확인할 수 있습니다 해결하기 위해 모델이 여기에 null의 경우 : 당신은 바로 여기에 그것을 던져 때문에
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");
}
}
명백히'model.getSelected()'의 결과는'null' 인 경우입니다. 맞습니까? –
'model.getSelected()'는 분명히 null을 반환합니다. 모델의 타입을 제공하지 않는다면 왜 그것이 null을 반환 하는지를 설명하는 것이 거의 불가능할 것입니다. – VGR
빨간색 버튼을 클릭하면 'model.selected'값이 설정됩니다. 그리고 버튼을 클릭하지 않은 경우 null이고, 먼저 복사를 클릭하십시오. 그래서 ... 너는 이해 못하는 부분이 있니? –