Cài đặt Netbeans và viết chương trình Java Swing đầu tiên

Như ở bài trước giới thiệu Java Swing mình đã đánh giá rằng đây là một công cụ có giao diện thân thiện với người mới bắt đầu lập trình Java Swing, hơn hết nó hỗ trợ kéo thả các thành phần giao diện và sinh code tương ứng.

Nhờ đó, chúng ta có thể quan sát trực quan giao diện của chúng ta sẽ trông thế nào. Nhiệm vụ chính của chúng ta chỉ là xử lý các sự kiện khi người dùng tương tác. Tuy nhiên không phải cứ cái gì cũng kéo thả là có thể ngon lành, đôi lúc chúng ta cần code một xíu có khi lại nhanh và gọn hơn là làm bằng cách kéo thả.

Netbeans là gì?

NetBeans IDE là một công cụ hỗ trợ lập trình viết mã code miễn phí được cho là tốt nhất hiện nay, được sử dụng chủ yếu cho các lập trình viên phát triển Java tuy nhiên phần mềm có dung lượng khá là nặng dành cho các máy cấu hình có RAM, CPU tương đối cao để vận hành.

NetBeans IDE là môi trường phát triển tích hợp và cực kỳ cần thiết cho các lập trình viên, công cụ này có thể hoạt động tốt với rất nhiều nền tảng hệ điều hành khác nhau như Linux, Windows, MacOS,… là một mã nguồn mở cung cấp các tính năng cần thiết nhất nhăm tại ra các ứng dụng web, thiết bị di động, desktop.

NetBeans IDE hỗ trợ rất nhiều những ngôn ngữ lập trình như Python, Ruby, JavaScript, Groovy, C / C + +, và PHP.

Qua nhiều phiên bản cũ, nay công cụ lập trình NetBeans IDE đã cập nhật lên phiên bản 8.2 mới nhất có rất nhiều thay đổi và nâng cấp so với các phiên bản cũ hơn có thể kể đến như:

  • Nâng cao ngôn ngữ lập trình C và C++.
  • Nâng cấp, cải tiến các công cụ soạn thảo Profiler và Java.
  • Hỗ trợ Docker, PHP 7.
  • ECMAScript 6 và hỗ trợ thử nghiệm ECMAScript 7.
  • Nâng cấp, cải tiến HTML 5 và Javascript.

Để có thể cài đặt được NetBeans IDE các bạn phải cài đặt và cấu hình sẵn JDK trong máy thì mới cài đặt được. NetBean IDE được chia thành nhiều gói khác nhau để người dùng có thể tải về từng phần, tiết kiệm dung lượng, tùy theo nhu cầu của mình.

Giống với Notepad++, NetBean IDE có gợi ý cú pháp khá tốt, và còn nhiều tính năng khá thú vị như tự động căn chỉnh mã nguồn, Remote FTP, SVN …. Chính vì thế, nó được xem là môi trường phát triển không thể bỏ qua cho các lập trình viên.

Cài đặt Netbeans

Để cài đặt Netbeans các bạn cần thực hiện các bước sau theo thứ tự

Cài đặt JDK

Ta cần cài đặt Java SE Development Kit(JDK) trước mới cài đặt được Netbeans IDE. Đầu tiên các bạn vào link download JDK ở phía trên để download JDK về máy. Lưu ý chọn đúng phiên bản phù hợp với hệ điều hành các bạn đang sử dụng, và phải có tài khoản Oracle để đăng nhập mới có thể tải nhé. 

Lưu ý sau khi cài đặt JDK thành công chúng ta cần cấu hình biến môi trường cho Java. Để cài đặt biến môi trường cho Java cho mỗi hệ điều hành là hoàn toàn khác nhau, ở đây mình xin liệt kê cách cấu hình cho Windows 10.

Vào thanh tìm kiếm của windows tìm kiếm với từ khoá View advanced system settingsvà click vào.

Chọn tab Advanced -> và click vào Environment Variables.

Ở mục System variables, chọn New… và thêm JAVA_HOME và trỏ

đường dẫn đến thư mục cài đặt Java.

Bước cuối cùng cập nhật PATH, cũng trong System variables, tìm đến PATH và chọn EDIT thêm vào  %JAVA_HOME%\bin; vào cuối. 

Hoặc trong windows mới sẽ có nút new cho phép chúng ta thêm dòng mới.

Kiểm tra cài đặt có thành công hay không với lệnh CMD sau:

java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

Cài đặt Netbeans

Sau khi cài đặt JDK thành công chúng ta chỉ cần vào trang chủ của Netbeans để tải bản cài đặt tương thích với hệ điều hành đang sử dụng.

Đây là trang chủ các bạn có thể vào để download cách nhanh chóng: https://netbeans.apache.org/download/nb120/nb120.html

Đây là giao diện của netbeans khi mình cài đặt netbean thành công trên MacOS

Tạo project Java Swing trong netbeans

Bước 1.  Mở ứng dụng NetBeans , New Project | Java | Java Application , nhấp Next , trên hộp thoại “New Java Application ” điền các thông tin trong hộp thoại.

Sau khi tạo thành công các bạn cứ chọn Next cho đến màn hình Name & Location

  • Project Name: Tên của dự án
  • Project location: Nơi lưu trữ dự án

Đây là 2 thông tin các bạn cần nhập để đặt tên cũng như vị trí lưu trữ dự án của chúng ta.

Nhớ bỏ chọn Create Main Class vì chúng ta sẽ sử dụng JFrame để chạy chương trình.

Bước 2: Tạo JFrame

Sau khi khởi tạo project thành công, chúng ta chọn New ->JFrame và tiến hành đặt tên cho nó.

Dưới đây là giao diện khi tạo một JFrame

Chúng ta chỉ việc nắm và kéo thả các thành phần giao diện trong Swing vào JFrame. 

Khi chọn vào mỗi thành phần trên giao diện lập tức các thuộc tính của nó như màu sắc, font chữ, tên etc sẽ được hiển thị ở phần Properties. Ngoài ra nó còn có tab Events chứa các sự kiện và dẫn đến code xử lý của chúng ta.

Mẫu đăng ký trên mình kéo thả các thành phần:

  • JLabel: dùng để hiển thị các tên User name, Password.
  • JTextField: cho phép người dùng nhập các thông tin tương ứng.
  • JButton: cho phép người dùng submit dữ liệu đã nhập.

Sử dụng Properties để chỉnh JButton1 thành Login.

Bước 3: Xử lý sự kiện

Mặc định thì tên các biến đại diện cho các thành phần trong JFrame rất khó hiểu như JTextField1, JButton1 etc. Chúng ta có thể thay đổi chúng trong Tab Properties ở mục Code.

Ở đây mình đổi tên của các TextField và Button để dễ sử dụng hơn: userNameText, passwordText và btnLogin

Sau khi đổi tên thành công, chúng ta sẽ bắt đầu xử lý sự kiện khi người dùng nhấn nút login thì tiến hành kiểm tra. Nếu username và password là admin thì xuất ra màn hình “success” và “failed”.

    private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {                                         
        if (userNameText.getText().equals("admin") && passwordText.getText().equals("admin")) {
            System.out.println("Success");
        } else {
            System.out.println("Failed");
        }
    }  

Khởi chạy chương trình

Sau khi click vào nút login thì màn hình console sẽ xuất ra chữ Success.

Dưới đây là mã nguồn đầy đủ của chương trình

/*
 * 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 helloworld;

/**
 *
 * @author kyle
 */
public class LoginFrame extends javax.swing.JFrame {

    /**
     * Creates new form LoginFrame
     */
    public LoginFrame() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        userNameText = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        passwordText = new javax.swing.JTextField();
        btnLogin = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("User name");

        jLabel2.setText("Password");

        btnLogin.setText("Login");
        btnLogin.setActionCommand("Login");
        btnLogin.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnLoginActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(50, 50, 50)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addGap(18, 18, 18)
                        .addComponent(userNameText, javax.swing.GroupLayout.PREFERRED_SIZE, 240, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addGap(25, 25, 25)
                        .addComponent(passwordText, javax.swing.GroupLayout.PREFERRED_SIZE, 240, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(26, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(btnLogin)
                .addGap(141, 141, 141))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(35, 35, 35)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(userNameText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(35, 35, 35)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(passwordText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(28, 28, 28)
                .addComponent(btnLogin)
                .addContainerGap(121, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {                                         
        if (userNameText.getText().equals("admin") && passwordText.getText().equals("admin")) {
            System.out.println("Success");
        } else {
            System.out.println("Failed");
        }
    }                                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(LoginFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(LoginFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(LoginFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(LoginFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new LoginFrame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton btnLogin;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JTextField passwordText;
    private javax.swing.JTextField userNameText;
    // End of variables declaration                   
}

Leave a Comment

Your email address will not be published. Required fields are marked *