swt学习:tableViewer 加入行不显示

小弟刚学swt,一下子碰到了好多问题,头都大了,希望高手能帮我解决,谢谢。tableViewer加入行不显示。A第一个java中的部分,就是给tableViewer的设置... 小弟刚学swt,一下子碰到了好多问题,头都大了,希望高手能帮我解决,谢谢。tableViewer 加入行不显示。

A第一个java中的部分,就是给tableViewer的设置,点button增加一行。

tableViewer.setContentProvider(new FifoIStructuredContentProvider());

tableViewer.setLabelProvider(new FifoITableLabelProvider());

tableViewer.setInput(Fifo.getFifos());
tableViewer.refresh();
//这是button的动作:
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {

Fifo fifo1 = new Fifo("Name",new Integer(4),new Integer(5));
Fifo.getFifos().add(fifo1);//就是这里不行啊!为什么加不上?也不显示?
tableViewer.refresh();
}

});

第二个Java:
package jc;

import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;

public class FifoITableLabelProvider extends LabelProvider implements
ITableLabelProvider {
public String getColumnText(Object element, int columnIndex) {
if (element instanceof Fifo) {
Fifo o = (Fifo)element;
switch (columnIndex) {
case 0:
return o.getName();
case 1:
return o.getComeTime()+"";
case 2:
return o.getNeedTime()+"";
}
}
return null;

}

public Image getImage(Object element) {
// TODO 自动生成方法存根
return null;
}

public String getText(Object element) {
// TODO 自动生成方法存根
return null;
}

public void addListener(ILabelProviderListener listener) {
// TODO 自动生成方法存根

}

public void dispose() {
// TODO 自动生成方法存根

}

public boolean isLabelProperty(Object element, String property) {
// TODO 自动生成方法存根
return false;
}

public void removeListener(ILabelProviderListener listener) {
// TODO 自动生成方法存根

}

public Image getColumnImage(Object element, int columnIndex) {
// TODO 自动生成方法存根
return null;
}

}

第三个JAVA:
package jc;

import java.util.List;

import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;

public class FifoIStructuredContentProvider implements
IStructuredContentProvider {

public Object[] getElements(Object inputElement) {

if (inputElement instanceof List) {
return ((List)inputElement).toArray();
} else {
return new Object[0];
}

}

/**
* Disposes any created resources
*/
public void dispose() {
// Do nothing
}

public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// TODO 自动生成方法存根

}

/**
* Called when the input changes
*/

}
第四个JAVA
package jc;

import java.util.ArrayList;
import java.util.List;

public class Fifo {

private String name;// 名称

private Integer cometime;// 到来时间

private Integer needime;// 运行时间

private Integer starttime;// 开始时间

private Integer stoptime;// 结束时间

private Integer state;// 状态

public Fifo(String name, Integer cometime, Integer needime) {
this.name = name;
this.cometime = cometime;
this.needime = needime;
}

public String getName() {
return this.name;
}
//以下全是get...和set...
下面是这样的:

public static List<Fifo> getFifos() {

List<Fifo> fifoList = new ArrayList<Fifo>();

Fifo something = new Fifo("name", new Integer(3), new Integer(5));

fifoList.add(something);

return fifoList;

}

}
问题:点了button后,没有反应,只有name,3,5这一行,为什么第一个Java里面的Fifo.getFifos().add(fifo1)后没有反应呢?tableViewer.refresh()也有了。非常急啊,谢谢了!!
展开
 我来答
小菜鸟王
2008-05-12
知道答主
回答量:18
采纳率:0%
帮助的人:0
展开全部
看了一下你的觉得有点问题!
1是你事件监听里面只是取得了数据而没有添加到tableView里面
2是你的Fifo类的fifoList产生的也有点问题
我把你这两个类改了,第一个类我不知道你的button在哪里,所以我在table上加了个双击事件,双击就会增加内容.
TableViewer1Class:
import org.eclipse.jface.window.*;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

public class TableViewer1Class extends ApplicationWindow {
TableViewer tv;
Fifo fifo1 = new Fifo("Name",new Integer(4),new Integer(5)); ;
public TableViewer1Class() {
super(null);
}
public void run() {
setBlockOnOpen(true);
open();
Display.getCurrent().dispose();
}
protected void configureShell(Shell shell) {
super.configureShell(shell);
shell.setText("TableViewer实例");
shell.setSize(400, 200);
}
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(1, false));
//定义一个TableViewer对象
tv = new TableViewer(composite, SWT.FULL_SELECTION);
// 设置Table
Table table = tv.getTable();
table.setLayoutData(new GridData(GridData.FILL_BOTH));
// 定义表中的列
TableColumn Col1 = new TableColumn(table, SWT.LEFT);
Col1.setText("姓名");
// 设置列宽度
Col1.setWidth(60);
TableColumn Col2 = new TableColumn(table, SWT.LEFT);
Col2.setText("第一个数");
Col2.setWidth(60);
TableColumn Col3 = new TableColumn(table, SWT.LEFT);
Col3.setText("第二个数");
Col3.setWidth(60);
// 显示表头
table.setHeaderVisible(true);
// 显示表格线
table.setLinesVisible(true);
tv.setContentProvider(new FifoIStructuredContentProvider());

tv.setLabelProvider(new FifoITableLabelProvider());

//tv.setInput(Fifo.getFifos());
tv.refresh();
//这是button的动作:
table.addListener(SWT.MouseDoubleClick, new Listener(){
public void handleEvent(Event event) {
tv.setInput(Fifo.getFifos());
tv.refresh();
}

});

return composite;
}
public static void main(String[] args) {
new TableViewer1Class().run();
}
}

2 Fifo:
import java.util.ArrayList;
import java.util.List;

public class Fifo {

private String name;// 名称

private Integer comeTime;// 到来时间

private Integer needTime;// 运行时间

private Integer starttime;// 开始时间

private Integer stoptime;// 结束时间

private Integer state;// 状态

static List<Fifo> fifoList = new ArrayList<Fifo>();

public Fifo(String name, Integer cometime, Integer needime) {
this.name = name;
this.comeTime = cometime;
this.needTime = needime;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getStarttime() {
return starttime;
}

public void setStarttime(Integer starttime) {
this.starttime = starttime;
}

public Integer getStoptime() {
return stoptime;
}

public void setStoptime(Integer stoptime) {
this.stoptime = stoptime;
}

public Integer getState() {
return state;
}

public void setState(Integer state) {
this.state = state;
}

public static List<Fifo> getFifos() {

Fifo something = new Fifo("name", new Integer(3), new Integer(5));

fifoList.add(something);

return fifoList;

}

public Integer getComeTime() {
return comeTime;
}

public void setComeTime(Integer comeTime) {
this.comeTime = comeTime;
}

public Integer getNeedTime() {
return needTime;
}

public void setNeedTime(Integer needTime) {
this.needTime = needTime;
}

}
ucshi
2008-05-12 · TA获得超过453个赞
知道小有建树答主
回答量:1119
采纳率:0%
帮助的人:994万
展开全部
一般人看不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式