2010-06-20 22 views
23

Đối với cuộc sống của tôi, tôi dường như không thể tìm thấy chi tiết về các hành động Java Swing: '(Khi tôi bắt gặp chúng tôi ngay lập tức nhận ra tính hữu dụng của chúng. Cho đến nay nó rất dễ làm việc. Bây giờ tôi đang mắc kẹt với một điều nhỏ nhặt : làm thế nào để chạy chúng bằng tay Ý tôi là theo mã Lưu ý rằng tôi đang xây dựng GUI sử dụng Netbeans (nếu mà làm cho bất kỳ sự khác biệt) tôi đã đi xa như:?.Tôi làm cách nào để gọi Action theo cách thủ công?

Application a = Application.getInstance(JPADemoApp.class); 
ApplicationContext ctx = a.getContext(); 
ActionMap am = ctx.getActionMap(JPADemoView.class, this.app); 
Action act = am.get("fetchOrders"); 

(tôi đã viết tất cả trên dòng riêng biệt để đơn giản hóa gỡ lỗi)

Vì vậy, bây giờ tôi có một tham chiếu hợp lệ để hành động. Bây giờ làm thế nào để chạy nó?

Trả lời

8

Nếu bạn muốn chạy tác vụ của mình theo cách thủ công, bạn có thể tạo một số ActionEvent và chuyển nó vào phương thức actionPerformedAction của bạn phải triển khai vì giao diện Action mở rộng ActionListener.

+2

Tôi đã xem qua câu hỏi này một lần nữa, và câu trả lời của bạn là - theo ý kiến ​​của tôi - nhiều chi tiết hơn so với một trong những @ b1nary.atr0phy. Mặc dù nó có nhiều upvotes hơn, tôi sẽ giữ cái này được chấp nhận. Tôi đoán người kia thu hút nhiều phiếu hơn vì nó là bản sao/có thể dán. Có thể một mẫu mã sẽ cải thiện câu trả lời này? – exhuma

+0

Chắc chắn, một mẫu mã sẽ có ích - không hỗ trợ lập trình sao chép/dán, nhưng nó sẽ minh họa khái niệm theo cách dễ hiểu hơn đối với một lập trình viên. – Suma

28

Bạn chỉ có thể gọi phương thức sự kiện hoạt động của trực tiếp:

for(ActionListener a: buttonExample.getActionListeners()) { 
    a.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null) { 
      //Nothing need go here, the actionPerformed method (with the 
      //above arguments) will trigger the respective listener 
    }); 
} 
+0

Bạn có thể loại bỏ các dấu ngoặc nhọn rỗng. Xem http://tinybrain.de/1007469 –

+0

Cái này tốt hơn và đơn giản hơn nhiều: https://stackoverflow.com/a/5109301/540552 –

Các vấn đề liên quan