0
我正在做一個家庭作業項目,其中用戶顯示一個產品目錄,然後用戶從目錄中選擇一個產品進行購買。SWT:表格調整問題
我決定使用SWT構建一個基本的UI。更不用說我剛開始學習SWT。
所以這就是我迄今爲止所做的。 UI的第一個組件是Table
,它顯示產品目錄。此代碼片段:
private void displayProductCatalog(List<Product> productList) {
Group group = new Group(shell, SWT.NULL);
group.setLayout(new GridLayout());
Label label = new Label(group, SWT.NULL);
label.setAlignment(SWT.CENTER);
label.setText("Plese select a product by clicking on the desired row.");
Table table = new Table(group, SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION);
table.setLinesVisible(true);
table.setHeaderVisible(true);
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
table.setLayoutData(data);
String[] titles = { "Product ID", "Product Description", "Cost" };
for (int i = 0; i < titles.length; i++) {
TableColumn column = new TableColumn(table, SWT.BOLD | SWT.CENTER);
column.setText(titles[i]);
column.setWidth(300);
}
String currency = " " + CurrencyHelper.fetchCurrency();
for (Product product : productList) {
ProductDescription productDescription = product.getProductDescription();
TableItem item = new TableItem(table, SWT.NONE);
item.setText(0, productDescription.getProductId());
item.setText(1, productDescription.getDescription());
item.setText(2, productDescription.getPrice().toString() + currency);
}
table.addSelectionListener(new TableRowSelectionListener(vendingMachine));
}
然後下一個組件再次是一個只有兩列的表。當用戶點擊產品目錄上的任何一行時,就會向服務器發出調用以執行少量驗證並用稅計算最終價格。然後這個第二張桌子上會填入各種各樣的稅,這些稅隨着最終價格一起應用。因此,在啓動時,填充產品目錄表並創建第二個表,但保留爲空(當用戶進行選擇時填充)。代碼段:
private void displaySaleLineItem(List<Product> productList) {
Group group = new Group(shell, SWT.NULL);
group.setLayout(new GridLayout());
Label label = new Label(group, SWT.NULL);
label.setAlignment(SWT.CENTER);
label.setText("Product Details.");
saleLineItemTable = new Table(group, SWT.BORDER);
saleLineItemTable.setLinesVisible(true);
saleLineItemTable.setHeaderVisible(true);
// GridData data = new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1);
// saleLineItemTable.setLayoutData(data);
for (int i = 0; i < 2; i++) {
TableColumn column = new TableColumn(saleLineItemTable, SWT.BOLD | SWT.CENTER);
column.setWidth(450);
}
}
代碼段,其中被填充的第二個表:
@Override
public void onPropertyEventBeforeSale(Sale sale) {
TableItem item = new TableItem(saleLineItemTable, SWT.NONE);
item.setText(0, sale.getProduct().getProductDescription().getDescription());
item.setText(1, sale.getProduct().getProductDescription().getPrice().toString());
for (TaxTypeModel taxTypeModel : sale.getTaxModel().getTaxTypeModelList()) {
item = new TableItem(saleLineItemTable, SWT.NONE);
item.setText(0, taxTypeModel.getTaxName());
item.setText(1, taxTypeModel.getTaxValue().toString() + "%");
}
item = new TableItem(saleLineItemTable, SWT.NONE);
item.setText(0, "TOTAL");
item.setText(1, sale.getTaxModel().getProductPriceIncludingTax().toString());
}
在UI啓動:
如您所見,第二張表格在填充表格時不會調整大小。儘管表格獲得垂直滾動窗格,但從用戶的角度來看,這是一個不便。
請問你能幫我嗎。我不確定這裏到底出了什麼問題。
太棒了!非常感謝。這工作。 –