Thứ Sáu, 7 tháng 6, 2013

Send data to other frame, gởi dữ liệu qua cửa sổ khác

[IMG]
JackV sẽ mà một demo nho nhỏ cho các bạn mới về việc truyền dữ liệu qua cửa sổ khác. Cấu trúc ở demo này sẽ là truyền thông qua cách gọi một phương thức M của class chính, phương thức M sẽ lấy đối tượng cần truyền ra và gọi phương thức S của class cửa sổ, phương thứ S sẽ là nhiệm vụ set dữ liệu cho cửa sổ.

Vấn đề đầu tiên mình muốn đề cập đến đó là khó khăn của các bạn mới là làm sao để gọi một cửa sổ khác, hay chính xác là gọi phương thức của đối tượng class chính trong khi đối tượng class phụ được tạo ra ở class chính. Trên thực tế, chúng ta hoàn toàn có thể gọi phươn thức của class phụ trực tiếp của đối tượng class phụ đang làm việc nhưng ở ví dụ này JackV sẽ demo theo kiểu class phụ gọi phương thức của class chính, từ phương thức của class chính sẽ gọi phương thức của class phụ khác để sét dữ dữ liệu, đây cũng là logic căn bản của ứng dụng chat.

=== Bắt đầu viết cho ChildFrame, class phụ


PHP:

    public ChildFrame1(MainFrame parent) { //Constructor nhận vào tham biến class chính
initComponents();
parentFrame = parent;
}
MainFrame parentFrame; //biến trỏ class chính khái báo toàn cục để gọi ở các phương thức khác
public void setName(String name) { // Set tên cho của sổ này

lbName.setText(name);
}public void addContent(String s) { //Phương thức để bên ngoài gọi truyền text và set text
txtContent.setText(txtContent.getText() + s + "\n");
}



=== Bắt đầu viết cho MainFrame, class chính.

PHP:

    public MainFrame() {
initComponents();
//Khởi tạo đối tượng class phụ và set dữ liệu cơ bản

child1 = new ChildFrame1(this);
child2 = new ChildFrame2(this);
child1.setTitle("Child Frame 1");
child2.setTitle("Child Frame 2");
child1.setName("Child 1");
child2.setName("Child 2");
child1.setLocation(500, 10);
child2.setLocation(500, 200);
child1.setVisible(true);
child2.setVisible(true);
}ChildFrame1 child1; //Khai báo biến đối tượng class phụ toàn cục
ChildFrame2 child2;

public void sendTextToChild1(String from, String s){ // phương thức để class phụ 2 gọi để truyền dữ liệu cho class phụ 1
child1.addContent(from + ": " + s);
child2.addContent(from + ": " + s);
}
public void sendTextToChild2(String from, String s){ // phương thức để class phụ 1 gọi để truyền dữ liệu cho class phụ 2
child2.addContent(from + ": " + s);
child1.addContent(from + ": " + s);
}



=== Xử lý sự kiện khi class phụ 1 truyền dữ liệu qua class phụ 2
class ChildFrame1

PHP:

    private void butSendActionPerformed(java.awt.event.ActionEvent evt) {
parentFrame.sendTextToChild2(lbName.getText(), txtText.getText()); // gọi phương thức ở class chính, truyền dữ liệu
txtText.setText("");
}


phương thức sendTextToChild2(,,) gọi phương thức addContent của class phụ tương ứng để set dữ liệu.

0 nhận xét:

Đăng nhận xét