Tôi đang làm việc trên vải này Composite
trên đó có thể thêm và xóa Composite
s khác.Thay đổi kích thước vỏ SWT tùy thuộc vào trẻ em
Sự hiểu biết của tôi về cách khái niệm toàn bộ nằm trong sương mù.
Khi trẻ em được thêm vào thùng chứa, với thực tế là vật chứa có GridData
chứa đầy trong phụ huynh, không nên phụ huynh cũng biết rằng con đã thay đổi kích cỡ? Trẻ em vẫn còn ẩn sau khi container của họ đã được đặt ra, vì vỏ (cha mẹ hàng đầu).
Nếu câu hỏi quá mơ hồ, đừng ngần ngại hỏi thêm chi tiết. Ngoài ra, hãy cố gắng hết sức để không chỉ cho tôi đến số Tìm hiểu bố cục trong bài viết SWT.
/**
*
* @author ggrec
*
*/
public class SSCCE
{
// ==================== 2. Instance Fields ============================
private Composite componentContainer;
private int componentCount = 0;
// ==================== 3. Static Methods =============================
public static void main(final String[] args)
{
new SSCCE();
}
// ==================== 4. Constructors ===============================
private SSCCE()
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
createContents(shell);
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
// ==================== 5. Creators ===================================
private void createContents(final Composite parent)
{
parent.setLayout(new GridLayout());
parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
final Button button = new Button(parent, SWT.PUSH);
button.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
button.setText("Add New Component");
button.addSelectionListener(new SelectionAdapter()
{
@Override public void widgetSelected(final SelectionEvent e)
{
addNewComponent();
componentContainer.layout();
}
});
componentContainer = new Composite(parent, SWT.BORDER);
componentContainer.setLayout(new GridLayout());
componentContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
}
// ==================== 6. Action Methods =============================
private void addNewComponent()
{
final Composite component = new Composite(componentContainer, SWT.BORDER);
component.setLayout(new FillLayout());
component.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
final Label label = new Label(component, SWT.NONE);
label.setText(String.valueOf(componentCount++));
}
}
Thực tế thú vị: Câu hỏi này được veeeery liên quan to this other one, that was posted 9 minutes ago. Một người nào đó hoặc là tâm linh hoặc rình rập tôi.
Giải pháp của bạn dường như hoạt động cho một ví dụ phức tạp hơn. Tôi tự hỏi nếu 'shell.setSize (Point)' là bắt buộc trong trường hợp của tôi (về cơ bản là 'pack (true)'). Tôi sẽ lấy lại cho các bạn sau khi tôi hoàn thành việc thực hiện toàn bộ. – GGrec
'gói (đúng)' không giống như hai dòng cuối cùng của tôi. Mã tôi trích xuất này cũng kiểm tra kích thước tối thiểu mà không thể được thực hiện với 'gói'. –
@ greg-449 giống với combobox JFace. Tôi đã hỏi một câu hỏi [ở đây] (http://stackoverflow.com/questions/32561924/how-to-truncate-a-long-name-in-a-jface-combobox). –