2014-03-04 8 views

Antwort

29

Sie können entweder einen neuen Stage, fügen Sie Ihre Kontrollen in sie erstellen oder wenn Sie die POPUP als Dialog Feld benötigen, dann können Sie prüfen, können verwenden Sie das folgende snippet

@Override 
public void start(final Stage primaryStage) { 
    Button btn = new Button(); 
    btn.setText("Open Dialog"); 
    btn.setOnAction(
     new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent event) { 
       final Stage dialog = new Stage(); 
       dialog.initModality(Modality.APPLICATION_MODAL); 
       dialog.initOwner(primaryStage); 
       VBox dialogVbox = new VBox(20); 
       dialogVbox.getChildren().add(new Text("This is a Dialog")); 
       Scene dialogScene = new Scene(dialogVbox, 300, 200); 
       dialog.setScene(dialogScene); 
       dialog.show(); 
      } 
     }); 
    } 

Wenn Sie es modal (Block andere Fenster), die Verwendung sein nicht wollen:

dialog.initModality(Modality.NONE); 
0

Haben Sie in ControlsFx Popover control gesucht.


import org.controlsfx.control.PopOver; 
import org.controlsfx.control.PopOver.ArrowLocation; 

private PopOver item; 

final Scene scene = addItemButton.getScene(); 

final Point2D windowCoord = new Point2D(scene.getWindow() 
     .getX(), scene.getWindow().getY()); 

final Point2D sceneCoord = new Point2D(scene.getX(), scene. 
       getY()); 

final Point2D nodeCoord = addItemButton.localToScene(0.0, 
         0.0); 
final double clickX = Math.round(windowCoord.getX() 
    + sceneCoord.getY() + nodeCoord.getX()); 

final double clickY = Math.round(windowCoord.getY() 
     + sceneCoord.getY() + nodeCoord.getY()); 
item.setContentNode(addItemScreen); 
item.setArrowLocation(ArrowLocation.BOTTOM_LEFT); 
item.setCornerRadius(4);        
item.setDetachedTitle("Add New Item"); 
item.show(addItemButton.getParent(), clickX, clickY); 

Dies ist nur ein Beispiel, aber ein popover klingt es wie Sie wollen erreichen könnte. Überprüfen Sie die documentation für weitere Informationen.

Wichtiger Hinweis: ControlsFX funktioniert nur mit JavaFX 8.0 b118 oder höher.

4

Die Popup-Klasse ist möglicherweise besser als die Stage-Klasse, je nachdem, was Sie möchten. Stage ist entweder modal (Sie können in Ihrer App auf nichts anderes klicken) oder verschwindet, wenn Sie in Ihrer App anderswo klicken (weil es ein separates Fenster ist). Popup bleibt oben, ist aber nicht modal.

Siehe dieses Popup Window Beispiel.