用字符串向量填充SWT表

时间:2014-10-08 05:18:13

标签: java user-interface vector swt

我正在自学Java GUI,我正在尝试实现一个较旧的基于文本的程序,我用实际的菜单制作了一些东西。在Eclipse上使用WindowBuilder进行格式化和互联网资源帮助,但我遇到了一些障碍。

我有一个可以容纳任意数量字符串的一维向量。我想将它显示在一张桌子上,但我不确定我是否正确行事。我的所有后端工作都运行良好,我只是在努力使用GUI。我们非常感谢您愿意提供的任何提示/更正/资源!我已经笨拙地笨拙几个小时,我担心我撞墙了。说实话,我也无法在WindowBuilder中测试GUI,但这是另一个故事。我的GUI类中的相关代码如下:

    Vector<String> demo = new Vector<String>();
    //nonsense elements just for the sake of debugging
    demo.addElement("Line1");  
    demo.addElement("Line2");  
    demo.addElement("Line3");  
    demo.addElement("Line4");  
    demo.addElement("Line5");  
    demo.addElement("Line6"); 


    table = new Table(this, SWT.BORDER | SWT.FULL_SELECTION);
    table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    TableItem item;
    for(int i = 0; i < demo.size(); i++) 
    {
        // Create a new TableItem for each line in the vector (each row)
        item = new TableItem(table, SWT.NONE);
        for (int j = 1; j <= demo.size(); j++) {
            // Populate the item
            item.setText(j - 1, demo.get(j));
        }
    }

1 个答案:

答案 0 :(得分:2)

问题在于这一行:

item.setText(j - 1, demo.get(j));

您只有一列(因为您没有自己创建任何列,表格假设只有一列),但使用TableItem#setText(int, String)设置列i中的文本(这是只对您的某件商品等于0

因此,如果您只有一列,请使用:

item.setText(demo.get(j));

item.setText(0, demo.get(j));

如果您有更多列,请在添加项目(new TableColumn(table, SWT.NONE))之前创建它们,然后使用以下内容添加项目:

for(int i = 0; i < items.size(); i++)
{
    TableItem item = new TableItem(table, SWT.NONE);

    for(int j = 0; j < table.getColumnCount(); j++)
    {
        item.setText(j, "something here");
    }
}

然后你必须pack()列:

for(TableColumn col : table.getColumns())
{
    col.pack();
}