2016-04-09 11 views
0

der Code erstellt unten ein Raster, das mit Schaltflächen bestückt ist. Ich würde gerne wissen, wie man eine Methode hinzufügen kann, die eine andere Gitterbox mit Zahlen auffüllt. Wenn die Nummer in der zweiten Popup-Grid-Box ausgewählt wird, ändert sich die Beschriftung der ursprünglichen Schaltfläche, auf die geklickt wurde. Im folgenden Beispiel klickt jemand auf den Button mit dem Text "1". Ein Raster erscheint mit den Tasten 1 bis 5. Taste 5 wird angeklickt. Die Popup-Grid-Box verschwindet und die Schaltfläche mit dem Text "1" wird jetzt auf "5" geändert.Wie erstellt man eine Popup-Box mit JavaFX

import javafx.application.*; 
import javafx.event.EventHandler; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.stage.*; 
import javafx.scene.*; 
import javafx.scene.layout.*; 
import javafx.scene.paint.Color; 
import javafx.scene.paint.Paint; 
import javafx.scene.control.*; 
import javafx.scene.input.MouseEvent; 

    public class GUI extends Application { 
     public static void main(String[] args) { 
      Application.launch(args); 
    } 


    @Override public void start(Stage primaryStage) 
    { 
     final int HGAP = 2; 
     final int VGAP = 2; 
     final int BUTTONSIZE = 50; 
     final int INSET = 5; 
     final int SIZE = 4; 

     GridPane root = new GridPane(); 
     root.setPadding(new Insets(INSET)); 
     root.setHgap(HGAP); 
     root.setVgap(VGAP); 
     root.setAlignment(Pos.CENTER); 

     final Button[][] btn = new Button[SIZE][SIZE]; 
     final Paint background = Color.TURQUOISE; 

     int index = 0; 
     for (int theCol = 0; theCol < SIZE; theCol++) { 
      for (int theRow = 0; theRow < SIZE; theRow++) { 

       btn[theRow][theCol] = new Button(""+ index); 
       btn[theRow][theCol].setPrefSize(BUTTONSIZE, BUTTONSIZE); 
       root.add(btn[theRow][theCol], theRow, theCol); 
       index++; 
       btn[theRow][theCol].setOnMouseClicked(new EventHandler<MouseEvent>() 
       { 
        @Override 
        public void handle(MouseEvent arg0) 
        { 
         Button b= (Button)arg0.getSource(); 
         System.out.println(b.getText()); 
        } 
       }); 
      } 
     } 

     Scene scene = new Scene(root,background); 
     primaryStage.setTitle("Grid"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 
} 
+0

Ich denke, hier ist erklärt: http://StackOverflow.com/Questions/12717969/javafx-2-custom-popup-pane – DVarga

+0

Ich denke, einige der Links dort waren temporäre Links, die die Codebeispiele in ihnen hatten – StonedRanger

Antwort

0

Sie einen PopupControl verwenden so versuchen könnte:

PopupControl popup = new PopupControl(); 
    popup.getScene().setRoot(yourGridPane); 
    popup.show(yourGridPane.getScene().getWindow()); 

In Ihrem Taste Hörer Sie popup.hide() nennen kann das Popup zu schließen und aktualisieren die Knopftext

0

Yoy auch können

 GridPane grid = new GridPane(); 
     grid.setHgap(10); 
     grid.setVgap(10); 
     final Text infoText = new Text(); 
     grid.setPadding(new Insets(10, 10, 10, 10)); 
     grid.add(infoText, 0, 4, 2, 1); 
     final Dialog dlg = new Dialog(null, "dialog"); 
     dlg.setContent(grid); 
     dlg.show(); 
Verwandte Themen