不归家的夜

导航

javafx之登陆界面的跳转

界面布局用到的是fxml而非纯java代码,工具是javafx sence builder


账号:account 密码:password


登陆成功:


可以点击退出登陆返回到登陆页面


工程目录:


package check;

/**
 *
 * @author itwang
 */
public class Check {
    public static boolean checkreturn(String account,String password){
     boolean checkbool = false;
    if("account".equals(account)&&"password".equals(password)){
       checkbool = true;
    }
    return checkbool;
    }
}

package fxmltest;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;

/**
 *
 * @author itwang
 */
public class LoginController implements Initializable {
    @FXML private TextField account;
    @FXML private PasswordField password;
     private FXMLTest application;
    
    
    public void setApp(FXMLTest application){
        this.application = application;
    }
    @FXML
    public void LOGIN_M(ActionEvent event) {
        application.userlogin(account.getText(), password.getText());
    }
    
    @FXML
    private void CLEAR_M(ActionEvent event) {
        account.setText(null);
        password.setText(null);
    }
    
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    
}

package fxmltest;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;

/**
 *
 * @author itwang
 */
public class MainController implements Initializable{
    private FXMLTest application;
    
    public void setApp(FXMLTest application){
        this.application = application;
    }
    
   @FXML
    private void OUT_M(ActionEvent event) {
       application.useroutmain();
    }
   
    @Override
    public void initialize(URL url, ResourceBundle rb) {

    }
    
}

package fxmltest;

import check.Check;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.fxml.JavaFXBuilderFactory;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

/**
 *
 * @author itwang
 */
public class FXMLTest extends Application {
    private Stage stage;
    private final double MINIMUM_WINDOW_WIDTH = 400.0;
    private final double MINIMUM_WINDOW_HEIGHT = 250.0;
    
    @Override
    public void start(Stage primaryStage) throws Exception {
        stage = primaryStage;
        stage.setTitle("FXML Login Sample");
        stage.setMinWidth(MINIMUM_WINDOW_WIDTH);
        stage.setMinHeight(MINIMUM_WINDOW_HEIGHT);
        gotologin();
        stage.show();
    }
    public void gotologin(){
      try {
            LoginController login = (LoginController) replaceSceneContent("FXML_LOGIN.fxml");
            login.setApp(this);
        } catch (Exception ex) {
            Logger.getLogger(FXMLTest.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void gotomain(){
     try {
            MainController main = (MainController) replaceSceneContent("FXML_MAIN.fxml");
            main.setApp(this);
        } catch (Exception ex) {
            Logger.getLogger(FXMLTest.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void userlogin(String account,String password){
    if(Check.checkreturn(account,password)){
      gotomain();
    }
    }
    public void useroutmain(){
      gotologin();
    }
   private Initializable replaceSceneContent(String fxml) throws Exception {
        FXMLLoader loader = new FXMLLoader();
        InputStream in = FXMLTest.class.getResourceAsStream(fxml);
        loader.setBuilderFactory(new JavaFXBuilderFactory());
        loader.setLocation(FXMLTest.class.getResource(fxml));
        AnchorPane page;
        try {
            page = (AnchorPane) loader.load(in);
        } finally {
            in.close();
        } 
        Scene scene = new Scene(page, 800, 600);
        stage.setScene(scene);
        stage.sizeToScene();
        return (Initializable) loader.getController();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

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

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.effect.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="250.0" prefWidth="400.0" 
            xmlns:fx="http://javafx.com/fxml" fx:controller="fxmltest.LoginController">
  <children>
    <VBox layoutX="3.0" layoutY="0.0" prefHeight="250.0" prefWidth="390.0" spacing="20.0">
      <children>
        <HBox minHeight="37.0" prefHeight="37.0" prefWidth="411.0">
          <children>
            <Label text="登陆界面">
              <effect>
                <DropShadow height="7.845238095238096" radius="4.1815476190476195" width="10.880952380952381" />
              </effect>
              <font>
                <Font name="System Bold" size="30.0" />
              </font>
              <HBox.margin>
                <Insets left="140.0" />
              </HBox.margin>
            </Label>
          </children>
        </HBox>
        <GridPane alignment="TOP_RIGHT" prefWidth="380.0">
          <children>
            <Label alignment="TOP_RIGHT" text="Account" GridPane.columnIndex="0" GridPane.halignment="RIGHT" GridPane.rowIndex="0">
              <effect>
                <DropShadow blurType="TWO_PASS_BOX" height="7.845238095238096" radius="3.675595238095238" width="8.857142857142858" />
              </effect>
              <font>
                <Font size="25.0" fx:id="x1" />
              </font>
              <GridPane.margin>
                <Insets right="8.0" fx:id="x2" />
              </GridPane.margin>
            </Label>
            <Label font="$x1" text="password" GridPane.columnIndex="0" GridPane.halignment="RIGHT" GridPane.margin="$x2" GridPane.rowIndex="1">
              <effect>
                <DropShadow blurType="TWO_PASS_BOX" height="7.845238095238094" radius="3.6755952380952372" width="8.857142857142854" />
              </effect>
            </Label>
            <TextField fx:id="account" prefHeight="26.0" prefWidth="268.0" promptText="please input your account" GridPane.columnIndex="1" GridPane.rowIndex="0" />
            <PasswordField fx:id="password" prefWidth="223.0" promptText="please input your password" GridPane.columnIndex="1" GridPane.rowIndex="1" />
            <Button id="btn_login" mnemonicParsing="false" onAction="#LOGIN_M" prefWidth="80.0" text="登陆" GridPane.columnIndex="0" GridPane.halignment="RIGHT" GridPane.rowIndex="2">
              <effect>
                <DropShadow />
              </effect>
              <GridPane.margin>
                <Insets top="15.0" />
              </GridPane.margin>
            </Button>
            <Button id="btn_clear" mnemonicParsing="false" onAction="#CLEAR_M" prefWidth="80.0" text="清除" GridPane.columnIndex="1" GridPane.rowIndex="2">
              <effect>
                <DropShadow />
              </effect>
              <GridPane.margin>
                <Insets left="80.0" top="15.0" />
              </GridPane.margin>
            </Button>
          </children>
          <columnConstraints>
            <ColumnConstraints hgrow="SOMETIMES" maxWidth="205.0" minWidth="10.0" prefWidth="147.0" />
            <ColumnConstraints hgrow="SOMETIMES" maxWidth="318.0" minWidth="10.0" prefWidth="243.0" />
          </columnConstraints>
          <rowConstraints>
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          </rowConstraints>
        </GridPane>
      </children>
      <padding>
        <Insets top="30.0" />
      </padding>
    </VBox>
  </children>
</AnchorPane>

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

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" 
            xmlns:fx="http://javafx.com/fxml" fx:controller="fxmltest.MainController">
  <children>
    <Hyperlink layoutX="86.0" layoutY="111.0" text="退出登录!" onAction="#OUT_M">
      <font>
        <Font size="45.0" />
      </font>
    </Hyperlink>
  </children>
</AnchorPane>



posted on 2013-08-29 22:15  不归家的夜  阅读(12969)  评论(0编辑  收藏  举报