2016-07-18 7 views
-1

特定のポイントが特定のメニューにあるかどうかを検出したいと思います。特定のポイントが特定のメニューにあるかどうかを検出する方法

私はこれを次のコードで実行しようとしましたが、null参照のエラーを返します。

(エラー - java.lang.NullPointerExceptionが)

// p : is point 
    // f : is flag (boolean variable) 
    for (Menu menu : menuBarMain.getMenus()) { 
     Node m = menu.getGraphic(); 
     if (m.contains(m.screenToLocal(p))) { 
      f = true; 
      break; 
     } 
    } 
+0

はあなたがNULLポインタ例外を取得していますか? – niceman

+0

ノードmをnullとして返し、if(m.contains(m.screenToLocal(p)))でエラーを返します。{ –

+0

すべてのメニューに「グラフィック」があるわけではありません。グラフィックは、メニューのテキストに加えて、あなたが含むいくつかのコンテンツです(例:保存メニュー項目のフロッピーディスクイメージ... – fabian

答えて

1

graphic propertyはちょうどメニューのテキストに加えて示されている一部のコンテンツです。これは、例えば、保存メニュー用のフロッピーディスクです。このようなコンテンツがない場合、このプロパティはnullです。これにより例外が発生します。 MenuBarMenuButtonsの1ノードを見つけるために、lookupAllを使用してノードが含まれている場合は、見つけることができ

(レイアウトがすでにMenuBar上で実行されていて):どのようなラインで

for (Node menu : menuBarMain.lookupAll(".menu")) { 
    if (menu.contains(menu.screenToLocal(p))) { 
     f = true; 
     break; 
    } 
} 
+0

ありがとう –

関連する問題