前提・実現したいこと
論理回路シミュレータというものを作っています。
いろいろ省略してしまっているところがあるのでわかりづらいですが、キャンパス上で画像を出して、その画像を左クリックで動かすところまではできています。
実現したいことは50行目のように画像上で右クリックを押したとき、stにその画像の情報を代入してそのstを活用したいのですが、ImageViewではコード上で扱えない文字列になってしまいます。何か良い表現方法はありますでしょうか。
該当のソースコード
public class CanvasEvent{ private ImageView activeLogic; public ImageView st; public ImageView en; private boolean isDrag, isReleased; public void whichLogic(List<Logic> logicList, String str){ //論理素子の割り当て if(str.equals("AND")){ Logic and = new And(); logicList.add(and); pane.getChildren().add(and.getImageView()); } if(str.equals("OR")){ Logic or = new Or(); logicList.add(or); pane.getChildren().add(or.getImageView()); } } public void setEvent(List<Logic> logicList){ //論理素子を動かすための設定 EventHandler<MouseDragEvent> mouseDrag = (event) -> this.mouseDrag(event); pane.addEventHandler(MouseDragEvent.MOUSE_DRAG_OVER, mouseDrag); EventHandler<MouseDragEvent> mouseRelease = (event) -> this.mouseRelease(event); EventHandler<MouseDragEvent> mouseReleased = (event) -> this.mouseReleased(event); EventHandler<MouseEvent> mouseDragDetected = (event) -> this.mouseDragDetected(event); logicList.forEach(logic -> { ImageView logiciv = logic.getImageView(); logiciv.addEventHandler(MouseDragEvent.MOUSE_DRAG_RELEASED, mouseReleased); logiciv.addEventHandler(MouseDragEvent.MOUSE_DRAG_RELEASED, mouseRelease); logiciv.addEventHandler(MouseEvent.DRAG_DETECTED, mouseDragDetected); }); } private void mouseDragDetected(MouseEvent event){ //素子の上でボタンを押した時 switch(event.getButton()){ case PRIMARY: isDrag = true; isReleased = false; activeLogic = (ImageView)event.getSource(); pane.setCursor(Cursor.CLOSED_HAND); activeLogic.setOpacity(0.5); activeLogic.startFullDrag(); event.consume(); System.out.println("drag detected: isDrag = " + isDrag); System.out.println("drag detected: isReleased = " + isReleased); break; case SECONDARY: st = (ImageView)event.getSource(); System.out.println("" + st); break; default: break; } }
試したこと
画像上で右クリックを押したときにこの文字列が出ますが、この文字列はコード上では扱えません。
ImageView@5f794593[styleClass=image-view]
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー