Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package login;
- import javafx.application.Application;
- import javafx.collections.FXCollections;
- import javafx.collections.ObservableList;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.geometry.Insets;
- import javafx.geometry.Pos;
- import javafx.scene.Scene;
- import javafx.scene.control.*;
- import javafx.scene.image.Image;
- import javafx.scene.image.ImageView;
- import javafx.scene.layout.VBox;
- import javafx.stage.Stage;
- import java.sql.*;
- public class Main extends Application {
- // поля с настройками подключения к БД
- private static final String URL = "jdbc:postgresql://127.0.0.1:5432/testdb2";
- private static final String USER = "postgres";
- private static final String PASS = "root";
- // поля для подключения
- private static Connection con;
- private static Statement stmt;
- private static ResultSet rs;
- Label labelPicture = new Label();
- ComboBox<String> cbDataBases;
- Label labelInfo = new Label();
- TextField tfUrl = new TextField();
- TextField tfUser = new TextField();
- PasswordField tfPass = new PasswordField();
- // кнопка вкл/выкл
- ToggleButton btnConn = new ToggleButton(" Connect ");
- // Query connectAndQuery = new Query();
- // класс подключения к БД
- ConnectDB connectDB = new ConnectDB();
- // класс отключения от БД
- Disconnect disconnect = new Disconnect();
- public static void main(String[] args) {
- launch(args);
- }
- public void start(Stage stage){
- stage.setTitle("Main menu");
- // стиль кнопки из css
- // btnConn.setStyle("-fx-font: 16 arial; -fx-base: #2f9cd4;");
- btnConn.setId("btnConnColor");
- // прозрачная подсказка в TestField
- tfUrl.setPromptText("jdbc:postgresql://");
- tfUser.setPromptText(" Enter username");
- tfPass.setPromptText(" Enter password");
- // задаем размер TestField
- tfUrl.setPrefColumnCount(15);
- tfUser.setPrefColumnCount(15);
- tfPass.setPrefColumnCount(15);
- // создать список типа Observablelist из элементов
- ObservableList<String> basesTypes = FXCollections.observableArrayList(" PostgreSqL",
- " MySqL");
- // создаем комбинироаный список
- cbDataBases = new ComboBox<String>(basesTypes);
- // корневой узел
- VBox root = new VBox();
- // отступ по краям VBox root
- root.setPadding(new Insets(0,0,15,0));
- // добавляем в Label картинку
- labelPicture.setGraphic( sizeLabelPicture("PostgreSqL") );
- VBox vBoxTop = new VBox();
- // отступы в vBoxTop
- vBoxTop.setPadding(new Insets(5,0,5,0));
- // промежутки между элементами внутри vBoxTop
- vBoxTop.setSpacing(10);
- vBoxTop.setAlignment(Pos.CENTER);
- vBoxTop.getChildren().add(cbDataBases);
- // добавляем imageViev в vBoxTop
- vBoxTop.getChildren().add(labelPicture);
- VBox vBoxCenter = new VBox();
- // промежутки между элементами внутри vBoxCenter
- vBoxCenter.setSpacing(5);
- // отступы вокруг vBoxCenter
- vBoxCenter.setPadding(new Insets(5, 20, 10, 20));
- // выравниваем все елементы по центру внутры vBoxCenter
- vBoxCenter.setAlignment(Pos.CENTER);
- vBoxCenter.getChildren().addAll( tfUrl, tfUser, tfPass);
- // установить значение по умолчанию
- cbDataBases.setValue(" PostgreSqL");
- btnConn.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent ev) {
- // выбираем базу
- if ( (cbDataBases.getValue()).contains("PostgreSqL") &&
- (cbDataBases.getValue()).length() > 0 && btnConn.isSelected() ){
- labelInfo.setText(" PostgreSqL Connected");
- // делаем не активной Combobox, TextField, делаем соответствующий текст и цвет button
- // подключаемся к базе
- activeInactive(true);
- }
- else if ( cbDataBases.getValue().contains("MySqL") && btnConn.isSelected() ) {
- labelInfo.setText(" Mysql Connected");
- // делаем не активной Combobox, TextField выводим соответствующий текст и цвет button
- // подключаемся к базе
- activeInactive(true);
- }
- else if (cbDataBases.getValue().contains("MySqL") && !(btnConn.isSelected()) ){
- labelInfo.setText(" Mysql Disconnected");
- // делаем активной Combobox, TextField выводим соответствующий текст и цвет button
- // отключаемся от базы
- activeInactive(false);
- }
- else if (cbDataBases.getValue().contains("PostgreSqL") && !(btnConn.isSelected()) ){
- labelInfo.setText(" PostgreSqL Disconnected");
- // делаем активной Combobox, TextField выводим соответствующий текст и цвет button
- // отключаемся от базы
- activeInactive(false);
- }
- }
- });
- //слушатель и обработчик событий ComboBox
- cbDataBases.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) {
- if (cbDataBases.getValue().contains( "MySqL") )
- labelPicture.setGraphic( sizeLabelPicture("MySqL") );
- else if (cbDataBases.getValue().contains( "PostgreSqL") )
- labelPicture.setGraphic( sizeLabelPicture("PostgreSqL") );
- }
- });
- //сплывающая подсказка ComboBox
- cbDataBases.setTooltip( new Tooltip(" Select DataBase ") );
- VBox vBoxButton= new VBox();
- // отступы вокруг vBoxCenter
- vBoxButton.setPadding(new Insets(10, 0, 0, 0));
- // выравниваем элементы по ценру окна
- vBoxButton.setAlignment(Pos.CENTER);
- vBoxButton.getChildren().add( btnConn);
- // VBOX для LabelInfo
- VBox vBoxLabelInfo = new VBox();
- vBoxLabelInfo.setPadding(new Insets(10, 0, 5, 0));
- vBoxLabelInfo.getChildren().add(labelInfo);
- vBoxLabelInfo.setAlignment(Pos.BOTTOM_CENTER);
- // добавляем VBOX-root
- root.getChildren().addAll(vBoxTop,vBoxCenter, vBoxButton, vBoxLabelInfo);
- // создаем сцену
- Scene scene = new Scene(root);
- // сцена на подмостках
- stage.setScene(scene);
- // отключем кнопку маximyze и фиксируем окно
- stage.setResizable(false);
- //по центру
- root.setAlignment(Pos.CENTER);
- // добавляем стиль-css
- scene.getStylesheets().add(Main.class.getResource("MainWindow.css").toExternalForm());
- // показуем подмостку и сцену
- stage.show();
- }
- // метод задает размер иконки и отправляет в label
- public ImageView sizeLabelPicture(String sqlType){
- ImageView imageViewPic = new ImageView();
- if (sqlType.equals("PostgreSqL")){
- Image image = new Image(getClass().getResourceAsStream("postgreSql.png"));
- imageViewPic.setFitHeight(55);
- imageViewPic.setFitWidth(55);
- imageViewPic.setImage(image);
- }
- else if (sqlType.equals("MySqL")){
- Image image = new Image(getClass().getResourceAsStream("mysql.png"));
- imageViewPic.setFitHeight(55);
- imageViewPic.setFitWidth(55);
- imageViewPic.setImage(image);
- }
- return imageViewPic;
- }
- // делаем активной/ неактивной Combobox, TextField
- public void activeInactive(boolean flag){
- cbDataBases.setDisable(flag);
- tfUrl.setDisable(flag);
- tfUser.setDisable(flag);
- tfPass.setDisable(flag);
- if (flag == true){
- // получаем коннект и используем его для отключения
- con = connectDB.conDB(con, URL, USER, PASS);
- //подпись кнопки
- btnConn.setText("Disconnect");
- // метка, стиль, цвет кнопки
- btnConn.setId("btnDisconColor");
- // создаем метку для удачного подключения(зеленый цвет)
- labelInfo.setId("labelInfoConnColor");
- }
- else {
- // отключаемся от базы
- disconnect.disconMeth(con);
- btnConn.setText(" Connect ");
- // создаем метку для отключения красный цвет)
- labelInfo.setId("labelInfoDisconColor");
- // метка, стиль, цвет кнопки
- btnConn.setId("btnConnColor");
- }
- }
- }
- package login;
- import java.sql.Connection;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- /**
- * Created by Admin on 03.12.2016.
- */
- public class Disconnect {
- // поля для подключения
- // private static Connection con;
- // private static Statement stmt;
- // private static ResultSet rs;
- public void disconMeth(Connection con){
- //close connection ,stmt and resultset here
- if (con != null){
- try {con.close(); } catch(SQLException se) { /*can't do anything */ }
- }
- // try { stmt.close(); } catch(SQLException se) { /*can't do anything */ }
- // try { rs.close(); } catch(SQLException se) { /*can't do anything */ }
- }
- }
- package login;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- /**
- * Created by Admin on 02.12.2016.
- */
- public class ConnectDB {
- // поля с настройками подключения к БД
- // private static final String URL = "jdbc:postgresql://127.0.0.1:5432/testdb2";
- // private static final String USER = "postgres";
- // private static final String PASS = "root";
- // Connection connection = null;
- String resault = "";
- public Connection conDB(Connection connection, String URL, String USER, String PASS){
- try {
- connection = DriverManager.getConnection(URL, USER, PASS);
- } catch (SQLException e) {
- resault = "Connection Failed";
- e.printStackTrace();
- }
- if (connection != null) {
- resault = "You successfully connected to database now";
- } else {
- resault = "Failed to make connection to database";
- }
- return connection;
- }
- }
- -------------------------------cssStyle-------------------------------------
- .root {
- -fx-background-image: url("background12.png");
- }
- /*стиль для всплывающей подсказки*/
- .tooltip {
- -fx-background-color: linear-gradient(#e2ecfe, #99bcfd);
- }
- .page-corner {
- -fx-background-color: linear-gradient(from 0% 0% to 50% 50%,#3278fa,#99bcfd);
- }
- .combo-box-base {
- -fx-font-family: "Arial Narrow";
- -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, white;
- -fx-background-insets: 0 0 -1 0, 0, 1, 2;
- -fx-background-radius: 3px, 3px, 2px, 1px;
- -fx-font-size: 12px;
- -fx-font-weight: bold;
- -fx-text-fill: #333333;
- -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 );
- }
- #labelInfoDisconColor {
- -fx-font-size: 12px;
- -fx-font-weight: bold;
- -fx-text-fill: #e7241d;
- -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 );
- }
- #labelInfoConnColor {
- -fx-font-size: 12px;
- -fx-font-weight: bold;
- -fx-text-fill: #0ca374;
- -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 );
- }
- #btnConnColor{
- -fx-font: 16 arial;
- -fx-base: #2f9cd4;
- }
- #btnDisconColor{
- -fx-font: 16 arial;
- -fx-base: #e7241d;
- }
- /*
- .button {
- -fx-text-fill: white;
- -fx-font-family: "Arial Narrow";
- -fx-font-weight: bold;
- -fx-background-color: linear-gradient(#61a2b1, #2A5058);
- -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0 , 1 );
- }
- /* при наведении курсора на кнопку */ /*
- .button:hover {
- -fx-background-color: linear-gradient(#2A5058, #61a2b1);
- } */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement