2011-01-24 24 views
5

Trong GXT, tôi đã có một điều khiển với một bảng điều khiển quan trọng bổ sung vào thành phần đáy, về cơ bản như thế này:Làm cách nào để buộc vẽ lại/bố cục lại trong Ext GWT (GXT)?

public class SamplePanel extends ContentPanel { 

ContentPanel panel = new ContentPanel();  

public SamplePanel() { 
    setBottomComponent(panel); 
} 

public void setVisible(boolean isVisible) { 
    panel.setVisible(isVisible); 
} 

Bảng đã được thiết lập như là "phần dưới" vì nó cần phải ở lại cuối tiện ích con và có thể xem được mọi lúc.

Vấn đề là, trong khi khả năng hiển thị của bảng điều khiển chuyển đổi chính xác, khu vực 'thành phần đáy' không thay đổi kích thước để trở nên nhỏ hơn và vừa với kích thước mới của khu vực dưới cùng.

Tuy nhiên, tôi đã nhận thấy rằng khu vực dưới cùng sẽ thay đổi kích thước khi tôi thay đổi kích thước của tiện ích theo cách thủ công bằng chuột.

Có cách nào để lập trình buộc vẽ lại/sơn lại/bố cục lại ... bất kỳ thứ gì có thay đổi thành phần dưới cùng để phản ánh kích thước nội dung mới của nó không?

Tôi đã thử tất cả những điều này và họ không làm việc:

public void setVisibility(boolean isVisible) { 
     panel.setVisible(isVisible); 
     doLayout(true); 
     recalculate(); 
     repaint(); 
    } 

Cảm ơn

Trả lời

8

Trong gxt cuối cùng bạn có thể làm.

this.layout(true); 

Nếu không bạn có thể kích hoạt sự kiện Sự kiện.

+0

Đó là sự kiện kích thước thay đổi kích thước lửa rất tinh tế, vì vậy bị hack, rất ẩn nhưng nó rất khó chịu ... –

0

Tôi không biết về GXT, nhưng trong GWT Tôi sẽ sử dụng một trong những force() hoặc forceLayout() phương pháp trên bảng điều khiển của tôi. Có lẽ có một API tương tự để làm điều đó!

HTH.

+0

Hmm ... Tôi không thể tìm thấy phương thức .force() hoặc .forceLayout() trên ContentPanel (lớp cha của lớp này tôi đang sử dụng). Lớp nào hiển thị .force()? – Cuga

0

This post tuyên bố rằng phía trên và phía dưới thành phần để không tham gia vào bố cục khi bảng điều khiển đã được hiển thị và đề xuất cách giải quyết thủ công (sử dụng RowLayout) hoặc đặt kích thước của bảng điều khiển theo cách thủ công.

Cân nhắc việc tìm các kích thước từ cha và gọi onResize (chiều rộng, chiều cao)

1

Bạn đã thử sử dụng phương pháp setLayoutOnChange() của ConentPanel?

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