Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Hướng dẫn lập trình GUI trong Java Swing

  1. #1
    Ngày gia nhập
    05 2011
    Nơi ở
    hell
    Bài viết
    37

    Mặc định Hướng dẫn lập trình GUI trong Java Swing

    GUI: Từ này chắc mình ko cần phải giải thích gì thêm nhỉ . Chắc ai cũng đã rõ nó là cái giúp ta giao tiếp với chương trình, ... tốt hơn
    Demo một chương trình cho dễ hình dung. Rồi ta mới bắt tay vào từng cái một . Trước tiên hãy đến với chương trình kinh điển "hello word"

    Java Code:
    1. import javax.swing.*;
    2. import java.awt.*;
    3.  
    4. public class first extends JFrame
    5. {
    6.     private JLabel label;
    7.    
    8.     public first ()
    9.     {
    10.         super ("My first program");
    11.        
    12.         //-----
    13.         setVisible (true);
    14.         setSize (200, 70);
    15.         setDefaultCloseOperation (EXIT_ON_CLOSE);
    16.         setLayout (new FlowLayout ());
    17.         //-----
    18.        
    19.         label = new JLabel ("Hello World, hello every body");
    20.         add (label);
    21.     }
    22.    
    23.     public static void main (String args [])
    24.     {
    25.         first gui = new first ();
    26.     }
    27. }
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		first.jpg
Lần xem:	279
Size:		87.8 KB
ID:		8843


    Bài này mình hướng dẫn code label, textfield, buttom ..... theo kiểu swing. (nên một số bạn ko nên thắc mắc là sao ko dùng awt nhé. Giải thích: Vì bây giờ swing hỗ trợi nhiều hơn, tiện hơn, .... tuy nhiên những cái đề cập tới thì ko hơn awt lắm )

    1> Thư viện
    - import javax.swing.*;
    trong swing chưa các lớp đối tượng JFrame, Jlabel, ...... Những thứ mà hiện lên nút bấm, đoạn gõ text.... mà ta thấy
    - import java.awt.*; Thư viện chứa các lớp đối tượng căn chỉnh ....;
    mấy bài tới sẽ đề cập tới
    - import java.awt.event.*; ---> Quản lý sự kiện

    2> GUI
    là những thứ mình nhìn thấy, giao tiếp với chương trình. Một gui bao gồm có khung frame (hoặc có thêm panel). frame hay panel thực chất là một cái khung to tướng để ta đính các đối tượng bắt sự kiện lên trên . Có thể ví như mấy cái khung bán dép ngoài chợ ấy . Còn những cái dép là những nhân vật chính
    Tuy là vậy nhưng nhân vật phụ lúc nào cũng phải có, nhân vật chính thì có người nọ người kia -----> Nhất thiết, bắt buộc phải tạo một khung frame khi nói tới gui
    Đương nhiên có khung rồi. chả có nhẽ lại để nó trơ trọi một mình . Bán hàng chẳng nhẽ là không có hàng ---> phải có thêm các label, buttom ....

    3> Mổ xẻ một chương trình đơn giản (tức là chương trình trên)
    Java Code:
    1. private JLabel label;
    Một cái nhãn bình thường mà ta đính lên JFrame thôi bạn ah.
    Java Code:
    1. super ("My first program");
    : tên chương trình, cái mà bạn thấy phía trên cùng cạnh dấu x

    add (label): Đính một cái gì đó lên frame thì ta dùng hàm add

    Java Code:
    1. //-----
    2.         setVisible (true);
    3.         setSize (200, 70);
    4.         setDefaultCloseOperation (EXIT_ON_CLOSE);
    5.         setLayout (new FlowLayout ());
    6.         //-----

    Cái này là 4 thuộc tính quan trọng của 1 farme. riêng setDefaultCloseOperation (EXIT_ON_CLOSE); ở bên awt ko hỗ trợ. do đó ta phải tự thiết kế lấy để dùng . Nhiệm vụ của nó kết thúc chương trình sau khi ấn dấu x. Bạn thử bỏ dòng này rồi dịch + chạy thử sẽ rõ. Chương trình vẫn run khi nó đã xxxx mấy lần rồi
    setVisible (true); // có nghĩa là cho hiện ra để ta thấy
    setSize (200, 70): chiều dài là 200 còn chiều rộng là 70
    setLayout (new FlowLayout ()); Trang trí tự động trên frame. có mấy loại cơ nhưng loại FlowLayout là phổ biến nhất, đẹp nhất rồi

    ----> Quan trọng nhất là bạn phải nhớ một farme bao giờ cũng có mấy cái kia
    bạn có thể theo dõi thêm ví dụ sau

    Java Code:
    1. import javax.swing.*;
    2. import java.awt.*;
    3. public class FirstGui extends JFrame
    4. {
    5.     private JLabel label;
    6.     private JButton button;
    7.     private JTextField textfield;
    8.    
    9.     public FirstGui ()
    10.     {
    11.         //-----
    12.         label = new JLabel ("Hi, Tao la label ne hehe");
    13.         add (label);
    14.        
    15.         textfield = new JTextField (15);
    16.         add (textfield);
    17.        
    18.         button = new JButton ("Click vao tao ne !!!");
    19.         add (button);
    20.     }
    21.    
    22.     public static void main (String args [])
    23.     {
    24.         FirstGui gui = new FirstGui ();
    25.         gui.setLayout (new FlowLayout ());
    26.         gui.setVisible (true);
    27.         gui.setSize (200, 125);
    28.         gui.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    29.     }
    30.    
    31. }
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		true.jpg
Lần xem:	221
Size:		98.0 KB
ID:		8844

    chú ý chỗ mình bôi đen nhé. 4 cái thuộc tính ko để hàm tạo thì vẫn để trong main đc. Mình thì ko thích để trong main lắm

    continue ..... !!!!

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,918

    Theo mình nghĩ, khi viết UI với Swing, bạn nên tránh gọi trực tiếp từ main(). Hàm main() có nhiệm vụ riêng của nó. Hơn nữa, bạn không nên build UI từ main thread, vì bản chất của Swing là event-driven, vì vậy nó sẽ chạy trên event-dispatching thread. Và thằng handler của nó tất nhiên cũng sẽ chạy trên event-dispatching thread chứ không phải main thread của chương trình. Một điều nữa, thằng JFrame là top-level container vì vậy bạn phải add UI components vào JPanel của nó, chứ không phải JFrame.
    Ví dụ:
    FirstUI.java
    Java Code:
    1. import java.awt.FlowLayout;
    2. import javax.swing.JButton;
    3. import javax.swing.JFrame;
    4. import javax.swing.JLabel;
    5. import javax.swing.JTextField;
    6.  
    7.  
    8. public class FirstGUI extends JFrame {
    9.     private JLabel mLabel;
    10.     private JButton mButton;
    11.     private JTextField mTextField;
    12.    
    13.     /**
    14.      * Constructor
    15.      **/
    16.     public FirstGUI() {
    17.         mLabel = new JLabel("Hello");
    18.         mTextField = new JTextField(15);
    19.         mButton = new JButton("Click");
    20.         getContentPane().add(mLabel);
    21.         getContentPane().add(mTextField);
    22.         getContentPane().add(mButton);
    23.     }
    24.    
    25.     /**
    26.      * Build UI
    27.      **/
    28.     public static void buildGUI() {
    29.         FirstGUI app = new FirstGUI();
    30.         app.setLayout(new FlowLayout());
    31.         app.setSize(200, 125);
    32.         app.setVisible(true);
    33.         app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    34.     }
    35. }

    Program.java
    Java Code:
    1.  
    2. import javax.swing.SwingUtilities;
    3.  
    4.  
    5. public class Program {
    6.     public static void main(String args[]) {
    7.         // run on event-dispatching thread
    8.         SwingUtilities.invokeLater(new Runnable() {
    9.             @Override
    10.             public void run() {
    11.                 FirstGUI.buildGUI();
    12.             }
    13.         });
    14.     }
    15. }

  3. #3
    Ngày gia nhập
    03 2009
    Nơi ở
    %appdata%\Temp
    Bài viết
    819

    Anh RR nói chuẩn luôn
    Ngoài ra bạn có thể khởi tạo cái JFrame như sau
    JAVA Code:
    1. EventQueue.invokeLater(new Runnable() {
    2.         public void run() {
    3.         try {
    4.             MainFrame frame = new MainFrame();
    5.             frame.setVisible(true);
    6.         } catch (Exception e) {
    7.             e.printStackTrace();
    8.         }
    9.         }
    10.     });
    Thực chất 2 cách này là 1 (SwingUtilities gọi đến EventQueue rồi nhét cái runnable này vào Event Dispatching Thread)
    .::[The best way to predict the future is to invent it]::.
    __________________________________________________ _ - Alan Kay -

  4. #4
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    767

    Cám ơn mọi người đã góp ý. Tuy nhiên tutorial em viết cho người chưa từng lập trình về GUI. Do đó em viết một cách đơn giản nhất, từng bước nhất để người đọc có thể nắm bắt được một số khái niệm. Tránh gây mơ hồ, khó hiểu dẫn tới nhàm chán.
    Tut đang trong quá trình hoàn thiện nên mong được mọi người góp ý nhiều hơn

    Thanks for reading,
    beautifulsoul84hung,

  5. #5
    Ngày gia nhập
    09 2011
    Bài viết
    11

    mình mới vào học java..nói là học nhưng thầy mới giới thiệu về java thôi và thầy ra cho cái bài tập là viết ứng dụng nhỏ nhỏ như game luyện đánh chữ...cho mình hỏi là minh tạo 1 cái textfield rồi..làm sao để cho nó bắt cái xâu mình gõ vào để rồi in cái đó ra..ý là mình gõ bao nhiêu là nó ra bấy nhiêu ấy...rồi làm sao nó so sánh với cái mà máy tính đưa ra...mình hiểu cách làm nhưng khổ nổi không biết viết cái bắt sự kiện...hjhj..ai hiểu chỉ vài chiêu với..em xin cảm ơn..
    Luôn Luôn lắng nghe..
    Nghe xong éo hiểu........

  6. #6
    Ngày gia nhập
    05 2011
    Nơi ở
    hell
    Bài viết
    37

    Mặc định Hướng dẫn lập trình GUI trong Java Swing

    Trích dẫn Nguyên bản được gửi bởi northlight Xem bài viết
    mình mới vào học java..nói là học nhưng thầy mới giới thiệu về java thôi và thầy ra cho cái bài tập là viết ứng dụng nhỏ nhỏ như game luyện đánh chữ...cho mình hỏi là minh tạo 1 cái textfield rồi..làm sao để cho nó bắt cái xâu mình gõ vào để rồi in cái đó ra..ý là mình gõ bao nhiêu là nó ra bấy nhiêu ấy...rồi làm sao nó so sánh với cái mà máy tính đưa ra...mình hiểu cách làm nhưng khổ nổi không biết viết cái bắt sự kiện...hjhj..ai hiểu chỉ vài chiêu với..em xin cảm ơn..
    Mình gợi ý bạn cách làm

    B1: Tạo 2 khung text (đương nhiên có tên biến là bien1, bien2)
    B2: Tạo value cho bien1 (bằng hàm random + timer)
    B3: lấy giá trị của bien2 so sánh với giá trị của bien1 vừa lấy

    Chú ý: Con trỏ chuột ở khung text2. nơi ta gõ. Sau khi gõ thì giá trị đc lấy để so sánh + bị reset.
    ...
    ...
    Bạn thử đi theo ý tưởng đó xem

  7. #7
    Ngày gia nhập
    04 2011
    Bài viết
    2

    Bạn viết cái gì mà icon tùm lum mình đọc muốn hoa cả mắt

  8. #8
    Ngày gia nhập
    05 2011
    Nơi ở
    Bắc - Trung - Nam -motNha
    Bài viết
    44

    Mời bạn tiếp tục ! Làm cái thread Từ cơ bản đến nâng cao -> với java Swing
    ckt_forchange

  9. #9
    Ngày gia nhập
    08 2013
    Nơi ở
    ha noi
    Bài viết
    1

    thanh bác bài viết rất hay đối với những người mới học như mình ...thank bác rất nhiều

Các đề tài tương tự

  1. Java Swing Tutorial A-Z (English subtitle)
    Gửi bởi ttaiinfo trong diễn đàn Tutorials và Thủ thuật lập trình Java
    Trả lời: 0
    Bài viết cuối: 25-10-2013, 07:58 PM
  2. Đọc Ghi file trong java, báo lỗi java.io.NotSerializableException: java.util.Scanner
    Gửi bởi quyenktpm2 trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 3
    Bài viết cuối: 13-08-2013, 11:40 AM
  3. java swing : làm thế nào để làm có 1 giao diện đẹp mắt
    Gửi bởi thanthoai101010 trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 9
    Bài viết cuối: 29-12-2012, 10:19 PM
  4. Cách chạy file .wav trong java Swing
    Gửi bởi hoangvuyb91 trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 0
    Bài viết cuối: 06-11-2012, 12:45 PM
  5. Sử dụng nhiều timer trong java swing
    Gửi bởi spacy0212 trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 0
    Bài viết cuối: 06-06-2012, 10:01 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn