2016-04-22 64 views
0

我正在使用JavaFX構建一個簡單的草圖程序。我希望用戶能夠在繪製矩形,圓形或線條之間進行切換,並且在菜單中爲這些選項放置了切換單選按鈕。JavaFX - 在條件語句中使用切換isSelected()

是否可以編寫一個if/else語句,以便我可以根據所選的三種不同功能編寫代碼?目前它只會畫線。這是我的代碼部分,到目前爲止(對不起它的混亂):

package Sketchbook; 



public class Sketchbook extends Application { 

final static int CANVAS_WIDTH = 800; 
final static int CANVAS_HEIGHT = 600; 

ColorPicker colorPicker1; 
ColorPicker colorPicker2; 


@Override 

public void start(final Stage primaryStage) { 

final Canvas canvas = new Canvas(CANVAS_WIDTH, CANVAS_HEIGHT); 
final GraphicsContext graphicsContext = canvas.getGraphicsContext2D(); 
initDraw(graphicsContext); 

canvas.addEventHandler(MouseEvent.MOUSE_PRESSED, 
new EventHandler<MouseEvent>(){ 

@Override 
public void handle(MouseEvent event) { 
graphicsContext.beginPath(); 
graphicsContext.moveTo(event.getX(), event.getY()); 
graphicsContext.setStroke(colorPicker1.getValue()); 
graphicsContext.stroke(); 
} 
}); 

canvas.addEventHandler(MouseEvent.MOUSE_DRAGGED, 
new EventHandler<MouseEvent>(){ 
@Override 
public void handle(MouseEvent event) { 
graphicsContext.lineTo(event.getX(), event.getY()); 
graphicsContext.setStroke(colorPicker1.getValue()); 
graphicsContext.stroke(); 
} 
}); 

canvas.addEventHandler(MouseEvent.MOUSE_RELEASED, 
new EventHandler<MouseEvent>(){ 

@Override 
public void handle(MouseEvent event) { 

} 
});  

Group root = new Group(); 

ToggleGroup toggleGroup = new ToggleGroup(); 
RadioButton rectangle = new RadioButton("Rectangle"); 
RadioButton circle = new RadioButton("Circle"); 
RadioButton line = new RadioButton("Line"); 
rectangle.setSelected(true); 
rectangle.setToggleGroup(toggleGroup); 
circle.setToggleGroup(toggleGroup); 
line.setToggleGroup(toggleGroup); 

回答

1

你已經差不多已經說明你需要做什麼:

canvas.addEventHandler(MouseEvent.MOUSE_DRAGGED, 

    new EventHandler<MouseEvent>(){ 

     @Override 
     public void handle(MouseEvent event) { 
      if (toggleGroup.getSelectedToggle() == line) { 
       graphicsContext.lineTo(event.getX(), event.getY()); 
       graphicsContext.setStroke(colorPicker1.getValue()); 
       graphicsContext.stroke(); 
      } else if (toggleGroup.getSelectedToggle() == rectangle) { 
       // etc... 
      } // etc... 

     } 
    } 
}); 

顯然,你可能需要重新排序的代碼很少確保在使用它們之前聲明和初始化變量。

+0

非常感謝你 - 我想我已經超越了它!現在都在工作。 –