Skip to content

Пример визуального приложения на JavaFX11 для IntelliJ IDEA на Java

License

Notifications You must be signed in to change notification settings

tsnsoft/TSN_Idea_JavaFX_Calc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TSN_Idea_JavaFX_Calc

Пример визуального приложения на JavaFX11 для IntelliJ IDEA на Java

screenshot

java -jar --module-path /opt/javafx-sdk-11.0.2/lib --add-modules javafx.controls,javafx.fxml ./out/artifacts/JavaFxApplication_jar/JavaFxApplication.jar

Main.java

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setScene(new Scene(root));
        primaryStage.getIcons().add(new Image("/image/icon.jpg"));
        primaryStage.setResizable(false);
        primaryStage.setTitle("Создание простейшей программы");
        primaryStage.show();
    }

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

Controller.java

package sample;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;

import javax.swing.*;
import java.awt.*;
import java.net.URL;
import java.util.ResourceBundle;

public class Controller implements Initializable {

    @FXML
    private Label label_answer;
    @FXML
    private TextField textField_A;
    @FXML
    private TextField textField_B;
    @FXML
    private TextField textField_X;
    @FXML
    private TextField textField_D;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
    }

    @FXML
    private void buttonMathAction() {
        double a, b, x, d, y;
        try {
            a = Double.parseDouble(textField_A.getText());
            b = Double.parseDouble(textField_B.getText());
            x = Double.parseDouble(textField_X.getText());
            d = Double.parseDouble(textField_D.getText());
        } catch (Exception ex) {
            Toolkit.getDefaultToolkit().beep();
            JOptionPane.showMessageDialog(null, "Ошибка введенных данных!",
                "Ошибка ввода", JOptionPane.ERROR_MESSAGE);
            textField_A.requestFocus();
            label_answer.setText("В введенных значениях допущены ошибки");
            textField_A.setText("");
            textField_B.setText("");
            textField_X.setText("");
            textField_D.setText("");
            return;
        }
        if (x < 6) {
            y = (((a + b) * (a + b)) / (x - 2));
        } else {
            y = ((x * (d * d * d)) + (b * b));
        }
        if (!(Double.isNaN(y)) && (!Double.isInfinite(y))) {
            label_answer.setText("Ответ: " + String.format("%.2f", y));
        } else {
            label_answer.setText("Нет ответа");
        }
    }

    @FXML
    private void buttonClearAction() {
        label_answer.setText("Ответ: ");
        textField_A.setText("");
        textField_B.setText("");
        textField_X.setText("");
        textField_D.setText("");
    }

    @FXML
    private void buttonExitAction() {
        System.exit(0);
    }

}

sample.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" prefHeight="288.0" prefWidth="650.0" xmlns="http://javafx.com/javafx/11.0.1"
            xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
    <children>
        <Button fx:id="button_Math" layoutX="54.0" layoutY="208.0" mnemonicParsing="false" onAction="#buttonMathAction"
                prefHeight="26.0" prefWidth="149.0" text="Решить"/>
        <Button fx:id="button_Clear" layoutX="268.0" layoutY="208.0" mnemonicParsing="false"
                onAction="#buttonClearAction" prefHeight="26.0" prefWidth="149.0" text="Очистить"/>
        <Button fx:id="button_Exit" layoutX="473.0" layoutY="208.0" mnemonicParsing="false" onAction="#buttonExitAction"
                prefHeight="26.0" prefWidth="150.0" text="Выход"/>
        <Label fx:id="label_a" layoutX="22.0" layoutY="27.0" text="A ="/>
        <Label fx:id="label_b" layoutX="22.0" layoutY="71.0" text="B ="/>
        <Label fx:id="label_x" layoutX="22.0" layoutY="115.0" text="X ="/>
        <Label fx:id="label_answer" layoutX="11.0" layoutY="254.0" prefHeight="18.0" prefWidth="614.0" text="Ответ:"/>
        <TextField fx:id="textField_A" layoutX="54.0" layoutY="23.0" prefHeight="26.0" prefWidth="150.0"/>
        <TextField fx:id="textField_B" layoutX="54.0" layoutY="67.0" prefHeight="26.0" prefWidth="150.0"/>
        <TextField fx:id="textField_X" layoutX="54.0" layoutY="111.0" prefHeight="26.0" prefWidth="150.0"/>
        <Label fx:id="label_d" layoutX="22.0" layoutY="160.0" text="D ="/>
        <TextField fx:id="textField_D" layoutX="54.0" layoutY="156.0" prefHeight="26.0" prefWidth="150.0"/>
        <ImageView fitHeight="134.0" fitWidth="387.0" layoutX="224.0" layoutY="49.0" pickOnBounds="true"
                   preserveRatio="true">
            <image>
                <Image url="@../image/formula.png"/>
            </image>
        </ImageView>
    </children>
</AnchorPane>

About

Пример визуального приложения на JavaFX11 для IntelliJ IDEA на Java

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published