は、onmouseclickを使用するだけでポップアップウィンドウを表示する方法があります。もしそうなら、どうすればこのことをやりますか?マップ内の建物をクリックすると、新しいウィンドウを表示させるためにコードに追加する必要があります。これが漠然としていると思われる場合は、さらに説明してみてください。乾杯!JavaFxポップアップウィンドウMouseClickで
package application;
import java.net.URL;
import java.util.Collection;
import java.util.ResourceBundle;
import javafx.beans.InvalidationListener;
import javafx.beans.Observable;
import javafx.beans.property.DoubleProperty;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.ScrollBar;
import javafx.scene.control.Slider;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.stage.Popup;
import javafx.stage.Stage;
public class MapController implements Initializable {
//T&L
protected static double TandLTOP_X = 154.0;
protected static double TandLTOP_Y = 283.0;
protected static double TandLBottom_X = 215.0;
protected static double TandLBottom_Y = 298.0;
//bussiness building
protected static double BuisTOP_X = 313.0;
protected static double BuisTOP_Y = 238.0;
protected static double BuisBottom_X = 354.0;
protected static double BuisBottom_Y = 260.0;
//It Building
protected static double ITTOP_X = 374.0;
protected static double ITTOP_Y = 252.0;
protected static double ITBottom_X = 387.0;
protected static double ITBottom_Y = 268.0;
//Nursing Building
protected static double NurseTOP_X = 425.0;
protected static double NurseTOP_Y = 259.0;
protected static double NurseBottom_X = 452.0;
protected static double NurseBottom_Y = 278.0;
//Audiotorium
protected static double AudTOP_X = 247.0;
protected static double AudTOP_Y = 211.0;
protected static double AudBottom_X = 297.0;
protected static double AudBottom_Y = 254.0;
//Libary
protected static double LibTOP_X = 328.0;
protected static double LibTOP_Y = 278.0;
protected static double LibBottom_X = 382.0;
protected static double LibBottom_Y = 291.0;
@FXML
public ImageView Map;
@FXML
public Slider zoomSlider;
@FXML
public ScrollBar scrollPane;
DoubleProperty zoomProperty;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
zoomProperty = zoomSlider.valueProperty();
// center the scroll pane
scrollPane.setValue((scrollPane.getMax() - scrollPane.getMin())/2);
scrollPane.setValue((scrollPane.getMax() - scrollPane.getMin())/2);
zoomProperty.addListener(new InvalidationListener() {
@Override
public void invalidated(Observable observable) {
double prevHvalue = scrollPane.getValue();
double prevVvalue = scrollPane.getValue();
Map.setScaleX(zoomProperty.get());
Map.setScaleY(zoomProperty.get());
scrollPane.setValue(prevHvalue);
scrollPane.setValue(prevVvalue);
}
});
}
private boolean isInTandL(double x, double y) {
return x > TandLTOP_X && x < TandLBottom_X &&
y > TandLTOP_Y && y < TandLBottom_Y;
}
private boolean isInBuisness(double x, double y) {
return x > BuisTOP_X && x < BuisBottom_X &&
y > BuisTOP_Y && y < BuisBottom_Y;
}
private boolean isIT(double x, double y) {
return x > ITTOP_X && x < ITBottom_X &&
y > ITTOP_Y && y < ITBottom_Y;
}
private boolean isInNursing(double x, double y) {
return x > NurseTOP_X && x < NurseBottom_X &&
y > NurseTOP_Y && y < NurseBottom_Y;
}
private boolean isInAudi(double x, double y) {
return x > AudTOP_X && x < AudBottom_X &&
y > AudTOP_Y && y < AudBottom_Y;
}
private boolean isInLibary(double x, double y) {
return x > LibTOP_X && x < LibBottom_X &&
y > LibTOP_Y && y < LibBottom_Y;
}
public void HoverMap(MouseEvent e) {
double x = e.getX();
double y = e.getY();
System.out.println(x +"," + y);
if (isInTandL(x, y)) {
System.out.println("In the Tourism and Leisure Building");
}
if (isInBuisness(x, y)) {
System.out.println("In the Business Building");
}
if (isIT(x, y)) {
System.out.println("In the It Building");
}
if (isInNursing(x, y)) {
System.out.println("In the Nursing Building");
}
if (isInAudi(x, y)) {
System.out.println("In the Auditorium Building");
}
if (isInLibary(x, y)) {
System.out.println("In the Libary Building");
}
}}
package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Popup;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;
public class Main extends Application {
public static Stage stage;
public static Scene SlideShow;
public static Scene map;
public static Scene building;
@Override
public void start(Stage primaryStage) {
try {
stage = primaryStage;
//load scene building
Parent root1 = FXMLLoader.load(getClass().getResource("map.fxml"));
map = new Scene(root1, 700, 500);
root1.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
Parent root2 = FXMLLoader.load(getClass().getResource("building.fxml"));
building = new Scene(root2, 600, 600);
root2.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
Parent root3 = FXMLLoader.load(getClass().getResource("Slideshow.fxml"));
SlideShow = new Scene(root3, 600, 600);
root3.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setTitle("Popup Example");
final Popup popup = new Popup(); popup.setX(300); popup.setY(200);
setMap();
primaryStage.centerOnScreen();
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void setMap() {
stage.setScene(map);
}
public static void setBuilding() {
stage.setScene(building);
}
public static void setSlideShow() {
stage.setScene(SlideShow);
}
public static void main(String[] args) {
launch(args);
}
}
ゴー(http://stackoverflow.com/help/mcve)。 – jewelsea