2016-11-18 6 views
0

ich an einer Aufgabe arbeite, und ich bin mit Kontrollkästchen, um meinen Text von normal zu fett, kursiv oder beides zu umwandeln. Allerdings, wenn ich meinen Code ausführen, bekomme ich einige Fehler, dass mein Checkbox keinen Konstruktor hat, die Strings akzeptiert, wenn ich auf Oracle überprüft und es gibt einen Konstruktor, den Strings akzeptiert und Kontrollkästchen kann nicht auf einen Knoten umgewandelt werden, wenn ich versuche, sie fügen in Meine Gridpanes, wenn ich denke, Kontrollkästchen erbt die Knoteneigenschaften naiv. Hier ist mein Code. Danke für jede mögliche Hilfe.CheckBox Fragen in JavaFX

import javafx.application.*; 
import javafx.stage.*; 
import javafx.scene.*; 
import javafx.geometry.*; 
import javafx.scene.layout.*; 
import javafx.scene.shape.*; 
import javafx.scene.paint.*; 
import java.util.*; 
import javafx.scene.text.*; 
import javafx.scene.control.*; 
import java.lang.*; 
import javafx.beans.binding.*; 
import javafx.event.*; 
//import javafx.scene.control.CheckBox; 
//import javafx.scene.control.Button; 

public class test extends Application{ 
    protected Text name = new Text(50, 50, "Hello World"); 

    protected BorderPane getPane() { 
    BorderPane masterPane = new BorderPane(); 

    Pane textPane = new Pane(); 
    textPane.getChildren().add(name); 
    //masterPane.setCenter(textPane); 

    GridPane gridPane = new GridPane(); 
    gridPane.setPadding(new Insets(10)); 
    gridPane.setHgap(5); 
    gridPane.setVgap(5); 
    gridPane.add(textPane,0,0); 
    GridPane.setHalignment(textPane, HPos.CENTER); 
    GridPane.setValignment(textPane, VPos.CENTER); 
    masterPane.setCenter(gridPane); 

    // HBox buttonPane = new HBox(1000); 
    Button upBtn = new Button("Up"); 
    Button downBtn = new Button("Down"); 
    GridPane buttonGridPane = new GridPane(); 
    buttonGridPane.add(upBtn,0,0); 
    buttonGridPane.add(downBtn,1,0); 
    buttonGridPane.setPadding(new Insets(10)); 
    buttonGridPane.setHgap(5); 
    buttonGridPane.setVgap(5); 
    buttonGridPane.setHalignment(upBtn, HPos.CENTER); 
    buttonGridPane.setValignment(upBtn, VPos.CENTER); 
    buttonGridPane.setHalignment(downBtn, HPos.CENTER); 
    buttonGridPane.setValignment(downBtn, VPos.CENTER); 
    // buttonPane.getChildren().addAll(upBtn, downBtn); 
    // buttonPane.setAlignment(Pos.CENTER); 
    buttonGridPane.setStyle("-fx-border-color: cyan"); 
    masterPane.setBottom(buttonGridPane); 

    upBtn.setOnAction(e -> name.setY(name.getY() - 10)); 
    downBtn.setOnAction(e -> name.setY(name.getY() + 10)); 

    return masterPane; 
    } 

    protected StackPane setPane(){ 

    BorderPane newMasterPane = new BorderPane(getPane()); 
    GridPane gridPane = new GridPane(); 
    gridPane.setMinSize(1250, 500); 
    gridPane.setMaxSize(1250, 500); 
    StackPane root = new StackPane(gridPane); 
    NumberBinding maxScale = Bindings.min(root.widthProperty().divide(1250), root.heightProperty().divide(500)); 
    gridPane.scaleXProperty().bind(maxScale); 
    gridPane.scaleYProperty().bind(maxScale); 
    gridPane.add(newMasterPane,0,0); 

    return root; 
    } 

    @Override 
    public void start(Stage primoStage) { 

    Scene scene = new Scene(setPane(), 1250, 500); 
    primoStage.setTitle("Assignment #7"); 
    primoStage.setScene(scene); 
    primoStage.show(); 

    } 

    public static void main(String[] args) { 
    launch(args); 
    } 
} 

class CheckBox extends test { 
    @Override 
    protected BorderPane getPane() { 
    BorderPane pane = super.getPane(); 

    Font fontBoldItalic = Font.font("Comic Sans MS", 
     FontWeight.BOLD, FontPosture.ITALIC, 20); 
    Font fontBold = Font.font("Comic Sans MS", 
     FontWeight.BOLD, FontPosture.REGULAR, 20); 
    Font fontItalic = Font.font("Comic Sans MS", 
     FontWeight.NORMAL, FontPosture.ITALIC, 20); 
    Font fontNormal = Font.font("Comic Sans MS", 
     FontWeight.NORMAL, FontPosture.REGULAR, 20); 

     name.setFont(fontNormal); 

     GridPane fontGridPane = new GridPane(); 
     fontGridPane.setPadding(new Insets(10)); 
     fontGridPane.setHgap(5); 
     fontGridPane.setVgap(5); 
     fontGridPane.setStyle("-fx-border-color: cyan"); 

     // VBox checkPane = new VBox(20); 
     // checkPane.setPadding(new Insets(5, 5, 5, 5)); 
     // checkPane.setStyle("-fx-border-color: cyan"); 
     CheckBox chkBold = new CheckBox("Bold"); 
     CheckBox chkItalic = new CheckBox("Italic"); 
     // checkPane.getChildren().addAll(chkBold, chkItalic); 
     // pane.setLeft(checkPane); 
     fontGridPane.add(chkBold,0,0); 
     fontGridPane.add(chkItalic,0,1); 
     fontGridPane.setHalignment(chkBold, HPos.CENTER); 
     fontGridPane.setValignment(chkBold, VPos.CENTER); 
     fontGridPane.setHalignment(chkItalic, HPos.CENTER); 
     fontGridPane.setValignment(chkItalic, VPos.CENTER); 

     EventHandler<ActionEvent> handler = e -> { 
     if (chkBold.isSelected() && chkItalic.isSelected()) { 
      text.setFont(fontBoldItalic); // Both check boxes checked 
     } 
     else if (chkBold.isSelected()) { 
      text.setFont(fontBold); // The Bold check box checked 
     } 
     else if (chkItalic.isSelected()) { 
      text.setFont(fontItalic); // The Italic check box checked 
     } 
     else { 
      text.setFont(fontNormal); // Both check boxes unchecked 
     } 
     }; 

     chkBold.setOnAction(handler); 
     chkItalic.setOnAction(handler); 

     return pane; 
    } 
} 
+0

wo auf der Erde sollten wir suchen - warum post sooooooooooooo viel Code? –

+1

'class CheckBox erweitert test' und' public class test extends Application'. Ihr Kontrollkästchen und die CheckBox von JavaFX sind nicht dasselbe Kontrollkästchen. – ifly6

Antwort

1

Ihre eigene CheckBox Klasse verwendet wird, nicht javafx.scene.control.CheckBox.

Sie können die voll quualified Namen, zum Beispiel nach wie vor beziehen sich auf javafx.scene.control.CheckBox

javafx.scene.control.CheckBox chkBold = new javafx.scene.control.CheckBox("Bold"); 

aber vielleicht sollten Sie Ihre Klasse überdenken Benennung CheckBox, da dieser Name sowieso irreführend ist (es ist eine Anwendung mit CheckBox es, keine CheckBox).