问题描述
我有2个Java Bean类-公司和雇员。 Employee.java具有属性“名称”(String),“电子邮件”(String)和“工资”(int),以及所有属性的获取器和设置器。 Company.java具有属性“名称”(字符串),“城市”(字符串)和“雇员”(列表),获取器和设置器。 我想创建一个包含公司列表的TreeTable,对于每个公司,我想将一个包含公司雇员列表的表显示为TreeItem。对于此实现,我使用的是org.eclipse.swt.widgets中的类。 这是我的TreeTable代码:
public class CompaniesTableCreation {
private static List<Company> companies;
public static void main(String[] args) {
init();
Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Tree companiesTree = new Tree(shell,SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
companiesTree.setHeaderVisible(true);
TreeColumn column1 = new TreeColumn(companiesTree,SWT.LEFT);
column1.setText("Name");
column1.setWidth(200);
TreeColumn column2 = new TreeColumn(companiesTree,SWT.LEFT);
column2.setText("City");
column2.setWidth(200);
for (Company c : companies) {
TreeItem companyTreeItem = new TreeItem(companiesTree,SWT.NONE);
companyTreeItem.setText(new String[] { c.getName(),c.getCity() });
Table employeesTable = new Table(companiesTree,SWT.BORDER
| SWT.V_SCROLL | SWT.H_SCROLL);
employeesTable.setHeaderVisible(true);
String[] titles = { "Name","Email address","Salary" };
for (String title : titles) {
TableColumn column = new TableColumn(employeesTable,SWT.NULL);
column.setText(title);
}
for (Employee e : c.getEmployees()) {
TableItem employeeTableItem = new TableItem(employeesTable,SWT.NULL);
employeeTableItem.setText(0,e.getName());
employeeTableItem.setText(1,e.getEmail());
employeeTableItem.setText(2,String.valueOf(e.getSalary()));
}
for (int loopIndex = 0; loopIndex < titles.length; loopIndex++) {
employeesTable.getColumn(loopIndex).pack();
}
TreeItem employeesItem = new TreeItem(companyTreeItem,SWT.NONE);
employeesItem.setData(employeesTable);
// If I display the employees as simple TableItems,data is OK,but I need a Table
/*for (Employee e : c.getEmployees()) {
TreeItem employeeItem = new TreeItem(treeItem,SWT.NONE);
employeeItem.setText(new String[] { e.getName(),e.getEmail(),String.valueOf(e.getSalary()) });
}*/
}
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
private static void init()
{
companies = new ArrayList<Company>();
Company c = new Company("IBM","New York");
c.addEmployee(new Employee("John","john.ibm.com",100));
c.addEmployee(new Employee("Michael","michael.ibm.com",200));
companies.add(c);
c = new Company("Google","San Francicsco");
c.addEmployee(new Employee("Linda","linda.google.com",100));
c.addEmployee(new Employee("Harry","harry.google.com",150));
c.addEmployee(new Employee("Tom","tom.google.com",120));
companies.add(c);
}
}
预期的结果是,当我从树中扩展公司时,打开分配有该公司员工的表,但是在当前实现中,什么都没有发生。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)