0
創建自定義按鈕形狀很容易,但如何確保新形狀也是按鈕本身的「碰撞盒」?JavaFX中按鈕的自定義碰撞形狀
在這種情況下,我創建了兩個hexagnol形狀的按鈕並將它們正確對齊。問題是按鈕的碰撞盒仍然是矩形,當你將鼠標從上面的按鈕移動到下面的按鈕時,你會注意到碰撞盒是嚴格的矩形,使得自定義形狀沒用。
任何方式來創建自定義碰撞形狀或碰撞檢查?
全部工作示例:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Polygon;
import javafx.stage.Stage;
public class Test extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Pane aPane = new Pane();
aPane.setPrefWidth(100);
aPane.setPrefHeight(100);
aPane.getChildren().add(createHexAt(10, 10));
aPane.getChildren().add(createHexAt(35, 45));
Scene aScene = new Scene(aPane);
primaryStage.setScene(aScene);
primaryStage.show();
}
private Button createHexAt(double xPos, double yPos) {
Button aButton = new Button();
aButton.setLayoutX(xPos);
aButton.setLayoutY(yPos);
aButton.setPrefWidth(50);
aButton.setPrefHeight(50);
double[] path = new double[12];
for (int q = 0; q < 6; q++) {
double x = Math.cos(Math.PI/3.0 * q + Math.PI/2.0);
double y = Math.sin(Math.PI/3.0 * q + Math.PI/2.0);
path[q * 2] = x;
path[q * 2 + 1] = y;
}
Polygon aPoly = new Polygon(path);
aButton.setShape(aPoly);
return aButton;
}
}
太棒了!謝謝! – photenth