Tuesday, October 11, 2016

Menu dengan Border Pane : Mengisi, Top, Left, Right, Bottom

Saya mengisi BorderPane dengan :

  • Top berisi Menu
  • Left berisi tiga buah tombol
  • Right berisi tiga buah tombol
  • Bottom berisi tiga buah tombol
Program yang saya buat adalah sebagai berikut :


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package menu3;

import javafx.application.Application;
import javafx.geometry.Pos;

import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

/**
 *
 * @author Joko Adianto
 */
public class MenuWithBorderPane2 extends Application {
    
    @Override
    public void start(Stage primaryStage) {
        MenuBar menuBarLogin = new MenuBar();
        Menu menuFile = new Menu("File");
        menuBarLogin.getMenus().add(menuFile);
        MenuItem menuItemLogin = new MenuItem("Login");
        MenuItem menuItemLogout = new MenuItem("Logout");
        menuFile.getItems().addAll(menuItemLogin, menuItemLogout);
        Menu menuPreferences = new Menu("Preferences");
        menuBarLogin.getMenus().add(menuPreferences);
        MenuItem menuItemZoom = new MenuItem("Zoom");
        MenuItem menuItemFont = new MenuItem("Font");
        menuPreferences.getItems().addAll(menuItemZoom, menuItemFont);
        
        Button btnOne = new Button("Button 1");
        Button btnTwo = new Button("Button 2");
        Button btnThree = new Button("Button 3");
        VBox vBoxButtonL = new VBox();
        vBoxButtonL.getChildren().addAll(btnOne, btnTwo, btnThree);
        
        Button btnFour = new Button("Button 4");
        Button btnFive = new Button("Button 5");
        Button btnSix = new Button("Button 6");
        VBox vBoxButtonR = new VBox();
        vBoxButtonR.getChildren().addAll(btnFour, btnFive, btnSix);
        
        Button btnSeven = new Button("Button 7");
        Button btnEight = new Button("Button 8");
        Button btnNine = new Button("Button 9");
        HBox hBoxButtonB = new HBox();
        hBoxButtonB.setAlignment(Pos.CENTER);
        hBoxButtonB.getChildren().addAll(btnSeven, btnEight, btnNine);
        
        
        BorderPane root = new BorderPane();
        root.setTop(menuBarLogin);
        root.setLeft(vBoxButtonL);
        root.setRight(vBoxButtonR);
        root.setBottom(hBoxButtonB);
        Scene scene = new Scene(root, 300, 250);
                
        primaryStage.setTitle("Menu Example with Border Pane ...!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
    
}

Membuat Menu : dengan BorderPane

Alternative kedua adalah menggunakan border pane untuk membuat menu. Contoh kode program yang saya buat adalah :

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package menu2;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

/**
 *
 * @author Joko Adianto
 */
public class MenuWithBorderPane extends Application {
 
    @Override
    public void start(Stage primaryStage) {
        MenuBar menuBarLogin = new MenuBar();
        Menu menuFile = new Menu("File");
        menuBarLogin.getMenus().add(menuFile);
        MenuItem menuItemLogin = new MenuItem("Login");
        MenuItem menuItemLogout = new MenuItem("Logout");
        menuFile.getItems().addAll(menuItemLogin, menuItemLogout);
        Menu menuPreferences = new Menu("Preferences");
        menuBarLogin.getMenus().add(menuPreferences);
        MenuItem menuItemZoom = new MenuItem("Zoom");
        MenuItem menuItemFont = new MenuItem("Font");
        menuPreferences.getItems().addAll(menuItemZoom, menuItemFont);
     
        BorderPane root = new BorderPane();
        root.setTop(menuBarLogin);
     
        Scene scene = new Scene(root, 300, 250);
     
        primaryStage.setTitle("Menu Example ...!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
 
}

Membuat Menu

Saya membuat sebuah layar yang terdiri dari dua buah menu :

  • Menu File dengan anak menu : Login dan Logout
  • Menu Preferences dengan anak menu : Zoom dan Font
Program ini merupakan dasar berpikir tentang menu. Kode programnya adalah sebagai berikut :


import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;

import javafx.stage.Stage;

/**
 *
 * @author Joko Adianto
 */
public class JavaFXMenu extends Application {
    
    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        MenuBar menuBarLogin = new MenuBar();
        Menu menuFile = new Menu("File");
        menuBarLogin.getMenus().add(menuFile);
        MenuItem menuItemLogin = new MenuItem("Login");
        MenuItem menuItemLogout = new MenuItem("Logout");
        menuFile.getItems().addAll(menuItemLogin, menuItemLogout);
        Menu menuPreferences = new Menu("Preferences");
        menuBarLogin.getMenus().add(menuPreferences);
        MenuItem menuItemZoom = new MenuItem("Zoom");
        MenuItem menuItemFont = new MenuItem("Font");
        menuPreferences.getItems().addAll(menuItemZoom, menuItemFont);
        
        Group root = new Group();
        root.getChildren().addAll(menuBarLogin);
        
        Scene scene = new Scene(root, 300, 250);
        
        primaryStage.setTitle("Menu Example ...!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
    
}

Layar Masukan Data Teman

Untuk memasukkan data teman digunakan  class berikut ini :

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javafxlogin;

import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

/**
 *
 * @author Joko Adianto
 */
public class FriendsEntri {
    Stage stage;
    Label lblName;
    TextField txfName;
    Label lblAddress;
    TextField txfAddress;
    Button btnSave;
    Button btnExit;
    HBox hBoxName;
    HBox hBoxAddress;
    HBox hBoxButton;
    VBox vBoxFriendsEntri;
    Group root1;  
    Scene scene1;
    Scene scene2;
    ButtonHandler bh;
   
    class ButtonHandler implements EventHandler{

        @Override
        public void handle(Event event) {
            if (event.getSource().equals(btnSave)){
               
            }
            if (event.getSource().equals(btnExit)){              
                stage.setScene(scene2);
                stage.show();
            }
        }
       
    }
   
   
    FriendsEntri(Stage pStage){
        stage = pStage;      
        scene2 = stage.getScene();
        ButtonHandler bh = new ButtonHandler();
       
        hBoxName = new HBox();
        lblName = new Label("Name");
        txfName = new TextField();
        hBoxName.getChildren().addAll(lblName, txfName);
       
        hBoxAddress = new HBox();
        lblAddress = new Label("Address");
        txfAddress = new TextField();
        hBoxAddress.getChildren().addAll(lblAddress, txfAddress);
       
        hBoxButton = new HBox();
        btnSave = new Button("Save");
        btnSave.setOnAction(bh);
        btnExit = new Button("Exit");
        btnExit.setOnAction(bh);
        hBoxButton.getChildren().addAll(btnSave, btnExit);
       
        vBoxFriendsEntri = new VBox();
       
        vBoxFriendsEntri.getChildren().addAll(hBoxName,
                hBoxAddress, hBoxButton);
       
        root1 = new Group();
        root1.getChildren().addAll(vBoxFriendsEntri);
        scene1 = new Scene(root1, vBoxFriendsEntri.getMaxWidth(),
                vBoxFriendsEntri.getMaxHeight(), Color.ALICEBLUE);
        stage.setScene(scene1);
        stage.setTitle("Friends' Data");
        stage.show();
       
       
       
    }
   
}

Membuat Screem Login

Saya akan memanggil sebuah screen. Screen tersebut adalah untuk login. Adapun program pertama adalah :

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javafxlogin;

import javafx.application.Application;
import javafx.stage.Stage;

/**
 *
 * @author Joko Adianto
 */
public class JavaFXFriends extends Application {
    LoginScreen loginScreen;
 
    @Override
    public void start(Stage primaryStage) {
        loginScreen = new LoginScreen(primaryStage);
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
 
}

Program ini akan membuat sebuah login screen :
  1. Class ini dipanggil oleh JavaFXFriends
  2. Jika button Login DIpencet akan menampilkan object FriendsEntri.java
/*
 * To change this license header, choose License Headers in 

Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javafxlogin;

import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;

import javafx.stage.Stage;



/**
 *
 * @author Joko Adianto
 */
public class LoginScreen {
    Stage stage;
    Label lblUser;
    TextField txfUser;
    Label lblPassword;
    PasswordField pswPassword;
    Button btnLogin;
    Button btnExit;
    HBox hBoxUser;
    HBox hBoxPassword;
    HBox hBoxButton;
    VBox vBoxLogin;
    Group root;
    Scene scene;
    ButtonHandler bh;
    
    private void displayFriendsEntri(Stage stage){
        FriendsEntri friendsEntri = new FriendsEntri(stage);
        
    }
    
    class ButtonHandler implements EventHandler{

        @Override
        public void handle(Event event) {
            if (event.getSource().equals(btnLogin)){
                displayFriendsEntri(stage);
            }
            if (event.getSource().equals(btnExit)){
                stage.close();
                
            }
        }
        
    }
    
    LoginScreen(Stage pStage){
        bh = new ButtonHandler();
        //User        
        hBoxUser = new HBox();
        
        lblUser = new Label("User");
        lblUser.setMinWidth(80);
        txfUser = new TextField();
        hBoxUser.getChildren().addAll(lblUser, txfUser);
        
        //Password
        hBoxPassword = new HBox();
        lblPassword = new Label("Password");
        lblPassword.setMinWidth(80);
        pswPassword = new PasswordField();
        hBoxPassword.getChildren().addAll(lblPassword, pswPassword);
        
        //Button
        hBoxButton = new HBox(); 
        btnLogin = new Button("Login");        
        btnLogin.setMinWidth(80);        
        btnExit = new Button("Exit");        
        btnExit.setMinWidth(80);        
        hBoxButton.setSpacing(65);
        btnLogin.setOnAction(bh);
        btnExit.setOnAction(bh);
        hBoxButton.getChildren().addAll(btnLogin, btnExit);
        
        vBoxLogin = new VBox();
        vBoxLogin.getChildren().addAll(hBoxUser, hBoxPassword, hBoxButton);
        
        root = new Group();
        root.getChildren().addAll(vBoxLogin);
        scene = new Scene(root, vBoxLogin.getMinWidth(), 
                vBoxLogin.getMinHeight(), Color.BEIGE);
        stage = pStage;
        stage.setScene(scene);
        stage.setTitle("Login");
        stage.show();
    }
}

&& && &&

Tuesday, October 4, 2016

Program Bertukar Scene : Untuk login dan entri data

Saya akan membuat program yang bertukar scene :

  1. Layar pertama digunakan untuk login : Nama Pengguna, Password. Jika tombol login dipencet masuk ke layar berikutnya : Entri data teman. Jika tombol keluar dipencet maka akan keluar dari Aplikasi
  2. Layar entri data teman terdiri dari : isian Nomor, Nama, Alamat.Jika tombol keluar dipencet maka akan keluar dari layar ini, dan berpindah ke layar login.