从JavaFX应用程序中删除圆角

时间:2018-06-02 03:09:13

标签: javafx

我在JavaFX中创建了一个计算器,但有一点令我感到沮丧 - 看起来场景或主要舞台的角落略微圆角,这些在按钮的方角后面可见。

Screenshot of the problem

我玩过场景的背景半径,但无法解决。这个半径(如果它是什么)的任何想法都被设定了?

这是我的代码和CSS:

.root
{   
    -fx-font-size: 12pt;
}

.label
{
    -fx-background-color: #999999;
    -fx-text-fill: #f9f9f9;
    -fx-font-weight: 500;
}

.label-main
{
    -fx-background-color: #999999;
    -fx-text-fill: #f9f9f9;
    -fx-font-size: 35pt;
    -fx-font-weight: 500;   

}

.button
{
    -fx-font-weight: lighter;
    -fx-border-style: solid;
    -fx-border-color: gray;
    -fx-background-color: #E0E0E0;
    -fx-border-width: 0 1 1 0;
    -fx-background-insets: 0,1,1;
    -fx-background-radius: 0;
}
.del-clear
{
    -fx-font-weight: lighter;
    -fx-font-size: 9pt;
    -fx-border-style: solid;
    -fx-border-color: gray;
    -fx-background-color: #E0E0E0;

    -fx-border-width: 0 1 1 0;
    -fx-background-insets: 0,1,1;
    -fx-background-radius: 0;
}

.button-bigger
{
    -fx-font-size: 14pt;
}

.button:pressed
{
    -fx-background-color: #B2B2B2;
}

.button-special
{
    -fx-background-color: #EA9747;
    -fx-text-fill: white;
    -fx-border-width: 0 0 1 0;
}

.zero-point
{
    -fx-border-width: 0 1 0 0;
}

.button-equals
{
    -fx-border-width: 0 0 0 0;
}

package calculator;

import java.util.ArrayList;
import java.util.List;
import javafx.application.*;
import static javafx.application.Application.launch;
import javafx.geometry.*;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.effect.DropShadow;
import javafx.scene.layout.*;
import javafx.stage.*;

public class UserInterface extends Application {

    private static int appWidth = 215; //230;
    private static int appHeight = 295; //300;
    private static int numRows = 7;
    private static int numCols = 8;
    private List<Button> numButList = new ArrayList();
    private List<Button> functButtons = new ArrayList();
    private List<Button> compButtons = new ArrayList();
    private Calculator calc;

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

    @Override
    public void start(Stage primaryStage) throws Exception {
//Screen s 
        Label screen2 = new Label("0");
        screen2.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
        screen2.setAlignment(Pos.CENTER_RIGHT);
        screen2.getStyleClass().add("label-main");

        Label screen1 = new Label("");
        screen1.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
        screen1.setAlignment(Pos.CENTER_RIGHT);

        GridPane screenBox = new GridPane();
        screenBox.getStyleClass().add("innerGrid");
        screenBox.setPrefSize(UserInterface.appWidth, (UserInterface.appHeight / UserInterface.numRows) * 2);

        //Set the row constraints
        for (int i = 0; i < 4; i++) {
            RowConstraints r = new RowConstraints();
            r.setVgrow(Priority.ALWAYS);
            r.setFillHeight(true);
            r.setPercentHeight(25);
            screenBox.getRowConstraints().add(r);
        }
        //Set the column constraints
        ColumnConstraints c = new ColumnConstraints();
        c.setHgrow(Priority.ALWAYS);
        c.setPercentWidth(100);
        screenBox.getColumnConstraints().add(c);

        //screenBox.setGridLinesVisible(true);
        screenBox.add(screen1, 0, 0, 1, 1);
        screenBox.add(screen2, 0, 1, 1, 3);

//Create calc and pass the screen1 to it
        this.calc = new Calculator(screen1, screen2);

//Create 0-9 buttons 
        for (int i = 0; i < 10; i++) {
            Button tempButton = new Button(Integer.toString(i));
            if (i == 0) {
                tempButton.getStyleClass().add("zero-point");
            }
            final String tempVar = Integer.toString(i);
            tempButton.setOnAction(e -> this.calc.setUserInput(tempVar));
            tempButton.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
            HBox.setHgrow(tempButton, Priority.ALWAYS);
            VBox.setVgrow(tempButton, Priority.ALWAYS);
            numButList.add(tempButton);
        }

//Point button 
        //point button 
        Button point = new Button(".");
        String tepointVarmpVar = ".";
        point.setOnAction(e -> this.calc.setUserInput(tepointVarmpVar));
        point.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
        HBox.setHgrow(point, Priority.ALWAYS);
        VBox.setVgrow(point, Priority.ALWAYS);
        point.getStyleClass().add("button-bigger");
        point.getStyleClass().add("zero-point");

//Equals, plus, minus, multiply, and divide buttons 
        Button equals = new Button("=");
        this.compButtons.add(equals);
        equals.setOnAction(e -> this.calc.calculate());

        Button plus = new Button("+");
        this.compButtons.add(plus);
        String plusVar = "+";
        plus.setOnAction(e -> this.calc.setUserInput(plusVar));

        Button minus = new Button("-");
        String minusVar = "-";
        minus.setOnAction(e -> this.calc.setUserInput(minusVar));
        this.compButtons.add(minus);
        minus.setStyle("fx-font-size: 16");

        Button multiply = new Button("x");
        String xVar = "*";
        multiply.setOnAction(e -> this.calc.setUserInput(xVar));
        this.compButtons.add(multiply);

        Button divide = new Button("/");
        this.compButtons.add(divide);
        String divideVar = "/";
        divide.setOnAction(e -> this.calc.setUserInput(divideVar));

        //Add button configs
        for (int i = 0; i < 5; i++) {
            this.compButtons.get(i).setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
            this.compButtons.get(i).getStyleClass().add("button-special");
            HBox.setHgrow(this.compButtons.get(i), Priority.ALWAYS);
            VBox.setVgrow(this.compButtons.get(i), Priority.ALWAYS);
        }
        equals.getStyleClass().add("button-equals");

        for (int i = 0; i < 4; i++) {
            this.compButtons.get(i).getStyleClass().add("button-bigger");
        }

//Clear and delete buttons 
        Button clear = new Button("CLR");
        clear.setOnAction(e -> this.calc.clearUserInput());
        clear.getStyleClass().add("del-clear");
        this.functButtons.add(clear);

        Button del = new Button("DEL");
        del.setOnAction(e -> this.calc.backSpace());
        del.getStyleClass().add("del-clear");
        this.functButtons.add(del);

        for (int i = 0; i < 2; i++) {
            this.functButtons.get(i).setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
            HBox.setHgrow(this.functButtons.get(i), Priority.ALWAYS);
            VBox.setVgrow(this.functButtons.get(i), Priority.ALWAYS);
        }

//Create GridPane 
        GridPane grid = new GridPane();

//Add nodes to grid pane 
        grid.add(numButList.get(0), 0, 6, 4, 1);
        grid.add(point, 4, 6, 2, 1);

        grid.add(numButList.get(1), 0, 5, 2, 1);
        grid.add(numButList.get(2), 2, 5, 2, 1);
        grid.add(numButList.get(3), 4, 5, 2, 1);

        grid.add(numButList.get(4), 0, 4, 2, 1);
        grid.add(numButList.get(5), 2, 4, 2, 1);
        grid.add(numButList.get(6), 4, 4, 2, 1);

        grid.add(numButList.get(7), 0, 3, 2, 1);
        grid.add(numButList.get(8), 2, 3, 2, 1);
        grid.add(numButList.get(9), 4, 3, 2, 1);

        grid.add(equals, 6, 6, 2, 1);
        grid.add(plus, 6, 5, 2, 1);
        grid.add(minus, 6, 4, 2, 1);
        grid.add(multiply, 6, 3, 2, 1);
        grid.add(divide, 6, 2, 2, 1);

        grid.add(clear, 0, 2, 3, 1);
        grid.add(del, 3, 2, 3, 1);

        grid.add(screenBox, 0, 0, 8, 2);

        // Set row and column constraints 
        for (int rowIndex = 0; rowIndex < UserInterface.numRows; rowIndex++) {
            RowConstraints rc = new RowConstraints();
            rc.setVgrow(Priority.ALWAYS);
            rc.setFillHeight(true);
            rc.setPercentHeight(UserInterface.appHeight / UserInterface.numRows);
            grid.getRowConstraints().add(rc);
        }

        for (int colIndex = 0; colIndex < UserInterface.numCols; colIndex++) {
            ColumnConstraints cc = new ColumnConstraints();
            cc.setHgrow(Priority.ALWAYS);
            cc.setFillWidth(true);
            cc.setPercentWidth(UserInterface.appWidth / UserInterface.numCols);
            grid.getColumnConstraints().add(cc);
        }

// Create the scene and the stage 
        Scene scene = new Scene(grid, appWidth, appHeight);
        scene.getStylesheets().add("Simple.css");

        primaryStage.setScene(scene);
        //primaryStage.setTitle("Calculator");
        primaryStage.setResizable(false);
        primaryStage.show();

    }

}

package calculator;

import java.util.ArrayList;
import java.util.List;

public class StringCalculator {

    public StringCalculator() {

    }

    public static double calcString(final String str2) {

        
        return new Object() {
            int pos = -1, ch;

            void nextChar() {
                ch = (++pos < str2.length()) ? str2.charAt(pos) : -1;
            }

            boolean eat(int charToEat) {
                while (ch == ' ') {
                    nextChar();
                }
                if (ch == charToEat) {
                    nextChar();
                    return true;
                }
                return false;
            }

            double parse() {
                nextChar();
                double x = parseExpression();
                if (pos < str2.length()) {
                    throw new RuntimeException("Unexpected: " + (char) ch);
                }
                return x;
            }

            // Grammar:
            // expression = term | expression `+` term | expression `-` term
            // term = factor | term `*` factor | term `/` factor
            // factor = `+` factor | `-` factor | `(` expression `)`
            //        | number | functionName factor | factor `^` factor
            double parseExpression() {
                double x = parseTerm();
                for (;;) {
                    if (eat('+')) {
                        x += parseTerm(); // addition
                    } else if (eat('-')) {
                        x -= parseTerm(); // subtraction
                    } else {
                        return x;
                    }
                }
            }

            double parseTerm() {
                double x = parseFactor();
                for (;;) {
                    if (eat('*')) {
                        x *= parseFactor(); // multiplication
                    } else if (eat('/')) {
                        x /= parseFactor(); // division
                    } else {
                        return x;
                    }
                }
            }

            double parseFactor() {
                if (eat('+')) {
                    return parseFactor(); // unary plus
                }
                if (eat('-')) {
                    return -parseFactor(); // unary minus
                }
                double x;
                int startPos = this.pos;
                if (eat('(')) { // parentheses
                    x = parseExpression();
                    eat(')');
                } else if ((ch >= '0' && ch <= '9') || ch == '.') { // numbers
                    while ((ch >= '0' && ch <= '9') || ch == '.') {
                        nextChar();
                    }
                    x = Double.parseDouble(str2.substring(startPos, this.pos));
                } else if (ch >= 'a' && ch <= 'z') { // functions
                    while (ch >= 'a' && ch <= 'z') {
                        nextChar();
                    }
                    String func = str2.substring(startPos, this.pos);
                    x = parseFactor();
                    if (func.equals("sqrt")) {
                        x = Math.sqrt(x);
                    } else if (func.equals("sin")) {
                        x = Math.sin(Math.toRadians(x));
                    } else if (func.equals("cos")) {
                        x = Math.cos(Math.toRadians(x));
                    } else if (func.equals("tan")) {
                        x = Math.tan(Math.toRadians(x));
                    } else {
                        throw new RuntimeException("Unknown function: " + func);
                    }
                } else {
                    throw new RuntimeException("Unexpected: " + (char) ch);
                }

                if (eat('^')) {
                    x = Math.pow(x, parseFactor()); // exponentiation
                }
                return x;
            }
        }.parse();
    }
}

0 个答案:

没有答案