Css văn bản màu xám

Hướng dẫn này cho thấy những lợi ích của việc sử dụng JavaFX FXML, một ngôn ngữ dựa trên XML cung cấp cấu trúc để xây dựng giao diện người dùng tách biệt với logic ứng dụng của mã của bạn

Nếu bạn bắt đầu tài liệu này từ đầu, thì bạn đã thấy cách tạo một ứng dụng đăng nhập chỉ bằng JavaFX. Tại đây, bạn sử dụng FXML để tạo cùng một giao diện người dùng đăng nhập, tách biệt thiết kế ứng dụng khỏi logic ứng dụng, do đó giúp mã dễ bảo trì hơn. Giao diện người dùng đăng nhập mà bạn xây dựng trong hướng dẫn này được hiển thị trong

Hướng dẫn này sử dụng NetBeans IDE. Đảm bảo rằng phiên bản NetBeans IDE mà bạn đang sử dụng hỗ trợ JavaFX 2. 2. Xem Yêu cầu hệ thống để biết chi tiết

Thiết lập dự án

Nhiệm vụ đầu tiên của bạn là thiết lập dự án JavaFX FXML trong NetBeans IDE

  1. Từ menu Tệp, chọn Dự án mới

  2. Trong danh mục ứng dụng JavaFX, chọn Ứng dụng JavaFX FXML. Bấm tiếp

  3. Đặt tên cho dự án FXMLExample và nhấp vào Kết thúc

    NetBeans IDE mở một dự án FXML bao gồm mã cho ứng dụng Hello World cơ bản. Ứng dụng này bao gồm ba tệp

    • FXMVí dụ. java. Tệp này xử lý mã Java tiêu chuẩn cần thiết cho ứng dụng FXML

    • Vật mẫu. fxml. Đây là tệp nguồn FXML trong đó bạn xác định giao diện người dùng

    • Bộ điều khiển mẫu. java. Đây là tệp điều khiển để xử lý đầu vào chuột và bàn phím

  4. Đổi tên SampleController. java sang FXMLExampleController. java để tên này có ý nghĩa hơn đối với ứng dụng này

    1. Trong cửa sổ Dự án, nhấp chuột phải vào SampleController. java và chọn Refactor sau đó Đổi tên

    2. Nhập FXMLExampleController và nhấp vào Refactor

  5. Đổi tên mẫu. fxml thành fxml_example. fxml

    1. Nhấp chuột phải vào Mẫu. fxml và chọn Đổi tên

    2. Nhập fxml_example và nhấp vào OK

Tải tệp nguồn FXML

Tệp đầu tiên bạn chỉnh sửa là tệp







7. Tệp này bao gồm mã để thiết lập lớp chính của ứng dụng và để xác định giai đoạn và cảnh. Cụ thể hơn đối với FXML, tệp sử dụng lớp






8, chịu trách nhiệm tải tệp nguồn FXML và trả về biểu đồ đối tượng kết quả

Thực hiện các thay đổi được in đậm trong

Ví dụ 4-1 FXMLVí dụ. java

    @Override
    public void start(Stage stage) throws Exception {
       Parent root = FXMLLoader.load(getClass().getResource("fxml_example.fxml"));
    
        Scene scene = new Scene(root, 300, 275);
    
        stage.setTitle("FXML Welcome");
        stage.setScene(scene);
        stage.show();
    }

Một cách thực hành tốt là đặt chiều cao và chiều rộng của cảnh khi bạn tạo cảnh đó, trong trường hợp này là 300 x 275;

Sửa đổi báo cáo nhập khẩu

Tiếp theo, chỉnh sửa tệp







9. Tệp này chỉ định giao diện người dùng được hiển thị khi ứng dụng khởi động. Nhiệm vụ đầu tiên là sửa đổi các câu lệnh nhập để mã của bạn trông giống như

Ví dụ 4-2 Khai báo XML và Tuyên bố nhập khẩu







Như trong Java, các tên lớp có thể đủ điều kiện (bao gồm cả tên gói) hoặc chúng có thể được nhập bằng cách sử dụng câu lệnh nhập, như được hiển thị trong. Nếu muốn, bạn có thể sử dụng các câu lệnh nhập cụ thể đề cập đến các lớp

Tạo bố cục GridPane

Ứng dụng Hello World do NetBeans tạo ra sử dụng bố cục







0. Đối với biểu mẫu đăng nhập, bạn sẽ sử dụng bố cục






0 vì bố cục này cho phép bạn tạo một lưới linh hoạt gồm các hàng và cột để bố trí các điều khiển

Xóa bố cục







0 và các phần tử con của nó và thay thế bằng bố cục






0 trong

Ví dụ 4-3 Bố cục GridPane




Trong ứng dụng này, bố cục







0 là thành phần gốc của tài liệu FXML và như vậy có hai thuộc tính. Thuộc tính






4 là bắt buộc khi bạn chỉ định trình xử lý sự kiện dựa trên bộ điều khiển trong đánh dấu của mình. Thuộc tính






5 luôn được yêu cầu và chỉ định không gian tên






6

Phần còn lại của mã điều khiển căn chỉnh và khoảng cách của ngăn lưới. Thuộc tính căn chỉnh thay đổi vị trí mặc định của lưới từ trên cùng bên trái của cảnh sang trung tâm. Thuộc tính







7 quản lý khoảng cách giữa các hàng và cột, trong khi thuộc tính






8 quản lý khoảng cách xung quanh các cạnh của ngăn lưới

Khi cửa sổ được thay đổi kích thước, các nút trong ngăn lưới được thay đổi kích thước theo các ràng buộc về bố cục của chúng. Trong ví dụ này, lưới vẫn ở trung tâm khi bạn mở rộng hoặc thu nhỏ cửa sổ. Các thuộc tính đệm đảm bảo có một vùng đệm xung quanh lưới khi bạn làm cho cửa sổ nhỏ hơn

Thêm trường văn bản và mật khẩu

Nhìn lại, bạn có thể thấy rằng biểu mẫu đăng nhập yêu cầu tiêu đề “Chào mừng” và các trường văn bản và mật khẩu để thu thập thông tin từ người dùng. Mã trong là một phần của bố cục







0 và phải được đặt phía trên câu lệnh

Ví dụ 4-4 Điều khiển trường văn bản, nhãn, trường văn bản và mật khẩu







2

Dòng đầu tiên tạo một đối tượng




0 và đặt giá trị văn bản của nó thành



1. Các thuộc tính



2 và



3 tương ứng với vị trí của điều khiển



0 trong lưới. Việc đánh số cho các hàng và cột trong lưới bắt đầu từ 0 và vị trí của điều khiển



0 được đặt thành (0,0), nghĩa là nó nằm trong cột đầu tiên của hàng đầu tiên. Thuộc tính



6 được đặt thành 2, làm cho tiêu đề Chào mừng kéo dài hai cột trong lưới. Bạn sẽ cần chiều rộng bổ sung này sau trong hướng dẫn khi bạn thêm biểu định kiểu để tăng kích thước phông chữ của văn bản lên 32 điểm

Các dòng tiếp theo tạo một đối tượng




7 với văn bản



8 ở cột 0, hàng 1 và một đối tượng



9 ở bên phải đối tượng đó ở cột 1, hàng 1. Một đối tượng



7 và






21 khác được tạo và thêm vào lưới theo cách tương tự

Khi làm việc với bố cục lưới, bạn có thể hiển thị các đường lưới, rất hữu ích cho mục đích gỡ lỗi. Trong trường hợp này, đặt thuộc tính







22 thành






23 bằng cách thêm câu lệnh






23 ngay sau câu lệnh






25. Sau đó, khi bạn chạy ứng dụng, bạn sẽ thấy các dòng cho các cột và hàng của lưới cũng như các thuộc tính khoảng cách, như minh họa trong

Thêm một nút và văn bản

Hai điều khiển cuối cùng cần thiết cho ứng dụng là điều khiển







26 để gửi dữ liệu và điều khiển



0 để hiển thị thông báo khi người dùng nhấn nút. mã là trong. Thêm mã này trước

Ví dụ 4-5 HBox, Nút và Văn bản







1

Cần có ngăn







28 để đặt căn chỉnh cho nút khác với căn chỉnh mặc định được áp dụng cho các điều khiển khác trong bố cục






0. Thuộc tính






10 được đặt thành






11, đặt một nút ở dưới cùng của không gian theo chiều dọc và ở cạnh phải của không gian theo chiều ngang. Ngăn






28 được thêm vào lưới ở cột 1, hàng 4

Ngăn







28 có một con, một






26 với thuộc tính






15 được đặt thành






16 và thuộc tính






17 được đặt thành






18. Mặc dù FXML là một cách thuận tiện để xác định cấu trúc giao diện người dùng của ứng dụng, nhưng nó không cung cấp cách triển khai hành vi của ứng dụng. Bạn triển khai hành vi cho phương thức






18 bằng mã Java trong phần tiếp theo của hướng dẫn này,

Việc gán một giá trị




40 cho một phần tử, như được hiển thị trong mã cho điều khiển



0, sẽ tạo một biến trong không gian tên của tài liệu mà bạn có thể tham khảo từ bất kỳ nơi nào khác trong mã. Mặc dù không bắt buộc nhưng việc xác định trường bộ điều khiển giúp làm rõ cách liên kết giữa bộ điều khiển và đánh dấu

Thêm mã để xử lý một sự kiện

Bây giờ làm cho điều khiển




0 hiển thị thông báo khi người dùng nhấn nút. Bạn làm điều này trong tệp



43. Xóa mã mà NetBeans IDE đã tạo và thay thế bằng mã trong

Ví dụ 4-6 FXMLExampleController. java




4

Chú thích




44 được sử dụng để gắn thẻ các trường thành viên bộ điều khiển không công khai và các phương thức xử lý để đánh dấu FXML sử dụng. Phương thức



45 đặt biến



46 thành



47 khi người dùng nhấn nút

Bạn có thể chạy ứng dụng ngay bây giờ để xem giao diện người dùng hoàn chỉnh. hiển thị kết quả khi bạn nhập văn bản vào hai trường và nhấp vào nút Đăng nhập. Nếu bạn gặp bất kỳ sự cố nào, thì bạn có thể so sánh mã của mình với ví dụ FXMLLogin

Sử dụng ngôn ngữ kịch bản để xử lý sự kiện

Là một giải pháp thay thế cho việc sử dụng mã Java để tạo trình xử lý sự kiện, bạn có thể tạo trình xử lý bằng bất kỳ ngôn ngữ nào cung cấp công cụ tạo tập lệnh tương thích với JSR 223. Những ngôn ngữ như vậy bao gồm JavaScript, Groovy, Jython và Clojure

Theo tùy chọn, bạn có thể thử sử dụng JavaScript ngay bây giờ

  1. Trong tệp

    
    
    
    
    
    
    
    9, hãy thêm phần khai báo JavaScript sau phần khai báo loại tài liệu XML

  2. Trong đánh dấu

    
    
    
    
    
    
    
    26, thay đổi tên của chức năng để cuộc gọi trông như sau

    
    
    
    
    
    
    
    70

  3. Xóa thuộc tính

    
    
    
    
    
    
    
    4 khỏi đánh dấu
    
    
    
    
    
    
    
    0 và thêm hàm JavaScript vào
    
    
    
    
    
    
    
    25