2012-05-10 38 views
6

HTML có Mô hình đối tượng tài liệu, sau đó Javascript có thể thao tác/di chuyển xung quanh.Java GUI: Mẫu đối tượng tài liệu

Khi tôi tạo GUI trong Swing - mô hình có vẻ rất khác biệt (tôi không biết tên của mô hình), vì tôi đang tạo trình quản lý bố cục và gắn các đối tượng bên trong chúng.

Câu hỏi của tôi: Có cách nào để thao tác Java GUIS theo cách giống như DOM không?

[Ví dụ: tôi muốn có thể xóa/thêm nút, di chuyển con xung quanh, v.v.]

Cảm ơn!

+0

Ý bạn là muốn thực hiện phân cấp của Component? –

+2

Bạn đang ở trong một số thất vọng chán nản và thất vọng. Mọi thứ đều khó khăn hơn trong Swing so với những gì bạn đã quen với Javascript. Bạn cũng sẽ khám phá ra rằng không có sự kiện chụp/bong bóng - nó được gửi đi chỉ cho người nghe được gắn trực tiếp vào nguồn sự kiện. –

+0

* "(HTML) ..không biết tên của mô hình" * Xem ['HTMLDocument'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/text/ html/HTMLDocument.html) –

Trả lời

7

Đối với các thành phần Swing, mọi thứ bắt đầu từ một bộ JFrame (bạn cũng có thể có JWindow và JDialog, nhưng bạn thường có ít nhất một khung gốc). Nhiều khả năng, tất cả những gì bạn quan tâm là contentPane của JFrame đó (nhưng bạn cũng có thể quan tâm đến các thuộc tính sở hữu của nó, v.v ...).

Vì vậy, từ JFrame, bạn có thể nhận khung nội dung như sau:

Container contentPane = frame.getContentPane(); 

Từ đó, bạn có thể bắt đầu đi xuống Cây Sự linh kiện, sử dụng:

Component[] children = contentPane.getComponents(); 

Từ một đứa trẻ , bạn có thể có được cấp độ gốc:

Container parent = child.getParent(); 

Để thêm thành phần vào vùng chứa:

container.add(someComponent); 
container.validate(); 

Để loại bỏ một thành phần từ một container:

container.remove(someComponent); 
container.validate(); 

Để di chuyển một thành phần từ một container khác, chỉ cần loại bỏ nó từ một và thêm nó vào người kia.

Tôi không chắc chắn điều này trả lời câu hỏi của bạn. Sẽ dễ dàng hơn nếu bạn có thể đăng các ví dụ thực sự về những gì bạn đang cố gắng làm.

+0

Tôi đề nghị ot sử dụng revalidate() + repaint(), trong mọi trường hợp, chắc chắn có thể được phân tích cho những gì JComponent yêu cầu và tại sao không, chỉ để tránh revalidate() + repaint() +1 – mKorbel

+0

Bạn có thể nhận được một danh sách với 'Ctrl + Shift + F1', giống như chúng hiển thị [ở đây] (http://stackoverflow.com/questions/6671021). –

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