Lập trình JavaFX Cơ bản

Lập trình JavaFX Cơ bản

TableView trong JavaFX TableView trong JavaFX TableView trong JavaFX TableView trong JavaFX TableView trong JavaFX 0/5 (7 reviews)

TableView trong JavaFX

Đã đăng 2018-09-14 16:35:15 bởi Lê Châu
0 bình luận 1013 lượt xem
TableView trong JavaFX 0 /5 stars (0 reviews)
 

Dẫn nhập

JavaFX là một công nghệ phát triển giao diện máy tính trên nền tảng Java nhằm thay thế công nghệ cũ Java Swing, Java AWT với những cấu trúc và cách viết dễ sử dụng, thân thiện với lập trình viên nhiều hơn

Qua khoá học JavaFX Cơ bản, Kteam sẽ cung cấp những kiến thức lập trình cơ bản về thiết kế giao diện phần mềm, giúp các bạn có thể tạo ra những phần mềm phục vụ cho học tập và công việc.


Nội dung

Nội dung bao gồm Source code & các lưu ý chính về quá trình thực hiện phần mềm. Kteam khuyến khích bạn cập nhập thêm nhiều kinh nghiệm cũng như hiểu chi tiết hơn về các kỹ thuật được đề cập trong bài học thông qua các video đính kèm.

Kiến thức cần nắm để học serial này:

  • Java Cơ bản.
  • Java Hướng đối tượng.

Project tham khảo

Controller.java

package sample.Main21;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;

import java.net.URL;
import java.util.ResourceBundle;

public class Controller implements Initializable {
    @FXML
    private TableView<Student> table;

    @FXML
    private TableColumn<Student, Integer> idColumn;

    @FXML
    private TableColumn<Student, String> nameColumn;

    @FXML
    private TableColumn<Student, String> emailColumn;

    @FXML
    private TableColumn<Student, Integer> ageColumn;

    private ObservableList<Student> studentList;

    @FXML
    private TextField idText;

    @FXML
    private TextField nameText;

    @FXML
    private TextField emailText;

    @FXML
    private TextField ageText;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        studentList = FXCollections.observableArrayList(
                new Student(1, "Chau", "chau@gmail.com", 21),
                new Student(2, "Chuong", "chuong@gmail.com", 20)
        );
        idColumn.setCellValueFactory(new PropertyValueFactory<Student, Integer>("id"));
        nameColumn.setCellValueFactory(new PropertyValueFactory<Student, String>("name"));
        emailColumn.setCellValueFactory(new PropertyValueFactory<Student, String>("email"));
        ageColumn.setCellValueFactory(new PropertyValueFactory<Student, Integer>("age"));
        table.setItems(studentList);
    }

    public void add (ActionEvent e){
        Student newStudent = new Student();
        newStudent.setId(Integer.parseInt(idText.getText()));
        newStudent.setName(nameText.getText());
        newStudent.setEmail(emailText.getText());
        newStudent.setAge(Integer.parseInt(ageText.getText()));
        studentList.add(newStudent);
    }

    public void delete (ActionEvent e){
        Student selected = table.getSelectionModel().getSelectedItem();
        studentList.remove(selected);

    }
}

Main21.java

package sample.Main21;

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

public class Main21 extends Application {

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

    @Override
    public void start(Stage primaryStage) {
        try{
            Parent root = FXMLLoader.load(this.getClass().getResource("sample.fxml"));
            Scene scene = new Scene(root);
            primaryStage.setScene(scene);
            primaryStage.show();
        }catch (Exception e){
            System.out.println(e);
        }
    }
}

Student.java

package sample.Main21;

public class Student {
    private int id;
    private String name;
    private String email;
    private int age;

    public Student(int id, String name, String email, int age) {
        this.id = id;
        this.name = name;
        this.email = email;
        this.age = age;
    }

    public Student() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

sample.fxml

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

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


<AnchorPane prefHeight="552.0" prefWidth="786.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Main21.Controller">
   <children>
      <TableView fx:id="table" layoutX="21.0" layoutY="23.0" prefHeight="470.0" prefWidth="519.0">
        <columns>
          <TableColumn fx:id="idColumn" prefWidth="75.0" text="ID" />
          <TableColumn fx:id="nameColumn" prefWidth="154.0" text="Name" />
            <TableColumn fx:id="emailColumn" prefWidth="161.0" text="Email" />
            <TableColumn fx:id="ageColumn" minWidth="0.0" prefWidth="128.0" text="Age" />
        </columns>
      </TableView>
      <Label layoutX="560.0" layoutY="72.0" text="ID" />
      <Label layoutX="560.0" layoutY="128.0" text="Name" />
      <Label layoutX="560.0" layoutY="182.0" text="Email" />
      <Label layoutX="560.0" layoutY="237.0" text="Age" />
      <TextField fx:id="idText" layoutX="609.0" layoutY="67.0" prefHeight="31.0" prefWidth="176.0" />
      <TextField fx:id="nameText" layoutX="609.0" layoutY="123.0" prefHeight="31.0" prefWidth="176.0" />
      <TextField fx:id="emailText" layoutX="609.0" layoutY="177.0" prefHeight="31.0" prefWidth="176.0" />
      <TextField fx:id="ageText" layoutX="609.0" layoutY="232.0" prefHeight="31.0" prefWidth="176.0" />
      <Button layoutX="577.0" layoutY="320.0" mnemonicParsing="false" onAction="#add" text="Add" />
      <Button layoutX="665.0" layoutY="320.0" mnemonicParsing="false" onAction="#delete" text="Delete" />
   </children>
</AnchorPane>

Tải Project

Nếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới! 


Kết

Trong bài này, chúng ta đã tìm hiểu về TableView trong JavaFX

Ở bài sau, Kteam sẽ giới thiệu đến bạn về TRUYỀN DỮ LIỆU QUA MỖI SCENE TRONG JAVAFX

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Và đừng quên “Luyện tập – Thử Thách – Không ngại khó

 

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education