zoukankan      html  css  js  c++  java
  • FXML + CSS 开发登陆界面

    开发步骤

    ps: 首先声明我使用的是Eclipse开发工具

    1. 创建一个JavaFX项目
    2. 创建一个FXML界面布局文件
    3. 创建一个FXML文件的java控制器类,实现Initializable接口

    Main类代码

    package application;
    
    import java.io.IOException;
    
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    
    public class Main extends Application {
    
        @Override
        public void start(Stage stage) {
            try {
    
                //加载fxml文件
                Parent root = FXMLLoader.load(
                        getClass().
                            getResource("fxml.fxml"));
                //创建场景
                Scene scene = new Scene(root, 300 , 275);
    
                //场景 添加到 舞台
                stage.setTitle("FXML Welcome");
                stage.setScene(scene);
                stage.show();
    
    
    
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
    
    
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }

    FXML文件控制器

    package application;
    
    import java.net.URL;
    import java.util.ResourceBundle;
    
    import javafx.event.ActionEvent;
    import javafx.fxml.FXML;
    import javafx.fxml.Initializable;
    import javafx.scene.text.Text;
    
    public class fxmlController implements Initializable{
    
        //实现 Initializable接口方法
        @Override
        public void initialize(URL location, ResourceBundle resources) {
            // TODO Auto-generated method stub
    
        }
    
        //声明提示text组件
        @FXML private Text actiontarget;
    
        //登陆按钮点击事件
        @FXML protected void handleSubmitButtonAction(ActionEvent event) {
            actiontarget.setText("Sign in button pressed");
        }
    
    }

    FXML布局文件代码

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import java.net.*?>
    <?import javafx.geometry.*?>
    <?import javafx.scene.control.*?>
    <?import javafx.scene.layout.*?>
    <?import javafx.scene.text.*?>
    <?import javafx.scene.layout.GridPane?>
    
    <GridPane fx:controller="application.fxmlController"
              xmlns:fx="http://javafx.com/fxml" 
              alignment="center" hgap="10" vgap="10"
    >
        <padding>
            <Insets top="25" right="25" bottom="10" left="25"/>
        </padding>
    
        <!-- 窗体标题 -->
        <Text text="Welcome" 
            GridPane.columnIndex="0" GridPane.rowIndex="0"
            GridPane.columnSpan="2"/>
    
        <!-- 用户名标签 -->
        <Label text="User Name:"
            GridPane.columnIndex="0" GridPane.rowIndex="1"/>
        <!-- 用户名输入框 -->
        <TextField 
            GridPane.columnIndex="1" GridPane.rowIndex="1"/>
        <!-- 密码标签 -->
        <Label text="Password:"
            GridPane.columnIndex="0" GridPane.rowIndex="2"/>
        <!-- 密码输入框 -->
        <PasswordField 
            GridPane.columnIndex="1" GridPane.rowIndex="2"/>
        <!-- 登陆按钮 使用hbox布局面板 以及添加事件 -->
         <HBox spacing="10" alignment="bottom_right" 
            GridPane.columnIndex="1" GridPane.rowIndex="4">
            <Button text="Sign In"     
            onAction="#handleSubmitButtonAction"/>
        </HBox>
        <!-- 文本提示 -->
        <Text fx:id="actiontarget"
           GridPane.columnIndex="0" GridPane.columnSpan="2"
           GridPane.halignment="RIGHT" GridPane.rowIndex="6"/>  
    
        <!-- 引入css文件 --> 
        <stylesheets>
            <URL value="@Login.css"
             />
        </stylesheets>    
    </GridPane>

    CSS文件

    /**
     * 设置舞台背景图片
     */
    .root {     -fx-background-image: url("1.jpg");}
    
    /** 
     * 设置风格标签
     * */
     .label{
        -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 );
     }
    
     /*
      *设置标题文本样式
      */
     #title{
        -fx-font-size: 32px;
        -fx-font-family: "Arial Blackt";
        -fx-fill: #818181;
        -fx-effect: innershadow( three-pass-box , rgba(0,0,0,0.7) , 6, 0.0 , 0 , 2 );
     }
    
     /** 
      * 设置提示文本样式
      * */ 
     #actiontarget {
      -fx-fill: FIREBRICK;
      -fx-font-weight: bold;
      -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 );  
    }
    
    /**
     * 设置登陆按钮样式
     */
     .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);}
  • 相关阅读:
    原始mvc1
    ssh3,hibernate和maven
    hibernate1
    mybatis和spring一起用
    python怎么生成requirements.txt文件
    selenium.common.exceptions.ElementNotVisibleException: Message: element not interactable (Session info: chrome=74.0.3729.108) (Driver info: chromedriver=2.43.600210
    Android SDK 安装与配置
    pip超时问题解决
    爬取网页数据
    pip安装报错: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy
  • 原文地址:https://www.cnblogs.com/jijm123/p/15643129.html
Copyright © 2011-2022 走看看