01/10/2018, 00:24

Đa luồng trong đồ họa (java)

Mọi người cho mk hỏi. mink muốn tạo 2 luồng ( 1 cho việc vẽ hình tròn- chuyển động đi xuống ) (1 vẽ hình vuông chuyển động đi lên). cả 2 thread này mk khởi tạo và start() trong 1 JPanel.
và Panel đó dc add vào Frame chính của mk (có phương thức main). nhưng khi chạy thì nó chỉ vẽ hình tròn,
khi đó mk thử thay cái vẽ hình vuông kia = System.out.print(“abc”)…thì nó lại chạy cả hai. ( vừa vẽ hình tròn di chuyển - vừa in ra )… mọi người giúp mk với. thank

Quân viết 02:31 ngày 01/10/2018

có thể bạn đã làm sai gì đó, chỉ đọc mô tả của bạn thì thánh sống dậy cũng không thể giúp nổi

Nguyen Ca viết 02:37 ngày 01/10/2018

2 luồng theo chú cùng thao tác song song trên 1 JPanel (không biết chú vẽ trên cái gì) được không?

Luong Nguyen viết 02:33 ngày 01/10/2018

Post code lên đây bạn ơi

huy viết 02:25 ngày 01/10/2018

không anh oi. ý em là vẽ 1 hình tròn(di chuyển lên) và 1 hình vuông(di chuyển xuống) . và em muốn hình tròn là 1 threads riêng, hình vuông là 1 thread riêng

VD: class hinhTron extends Jpanel implements Runable { paint()… vẽ hình tròn di chuyển }
class hinhVuông extends Jpanel implements Runable { paint()… vẽ hình vuông di chuyển}

class Khung_Chứa …extends Jpanel.{
Thread th_hinh_tron = new Thread( new hinhTron());
Thread th_hinh_vuong = new Thread( new hinhVuong());

         th_hinh_tron.start();
         th_hinh_vuọng.start();

Nhưng nó chỉ vẽ 1 hình tròn. và em thử thay phương thức vẽ trong hình Vuông = System.out.print(“ABC”.) thì nó lại chạy cả 2 ( vừa vẽ hình tròn (di chuyển ) vừa in ra ABC ).

}
anh biết tại sao giúp em với :))) thank anh

huy viết 02:33 ngày 01/10/2018

Bài của e nó là 1 project. chia ra làm nhiều class. nên em không biết post thế nào
nhưng .ý em là kiểu như là mô phỏng 2 vật có cách chuyển động khác nhau, xử dụng đa luồng.

VD: vẽ 1 hình tròn (di chuyển lên) và 1 vuông(di chuyển xuống ) . và em muốn hình tròn là 1
threads riêng, hình vuông là 1 thread riêng

class hinhTron extends Jpanel implements Runable { paint()… vẽ hình tròn di chuyển }
class hinhVuông extends Jpanel implements Runable { paint()… vẽ hình vuông di chuyển}

class Khung_Chứa …extends Jpanel.{

Thread th_hinh_tron = new Thread( new hinhTron());
Thread th_hinh_vuong = new Thread( new hinhVuong());

     th_hinh_tron.start();
     th_hinh_vuọng.start();

Nhưng nó chỉ vẽ 1 hình tròn. và em thử thay phương thức vẽ trong hình Vuông = System.out.print(“ABC”.) thì nó lại chạy cả 2 ( vừa vẽ hình tròn (di chuyển ) vừa in ra ABC ).

}
anh biết tại sao giúp em với :))) thank anh

Quân viết 02:26 ngày 01/10/2018

Nhờ sửa lỗi mà post code kiểu sợ mất code thì nghỉ khỏe đi

huy viết 02:35 ngày 01/10/2018

hyhy, mk làm được rùi. nó là do trong swing có luật đơn luồng. khi 1 thành phần trong Swing được thi hành thì tất cả mã lệnh có tác động hoặc phụ thuộc trạng thái của thành phần đó thì nên được thực hiện trong EDT

Bài liên quan
0