数据库的连接,查询结果新界面显示已经解决
有几个像商品信息表,顾客信息表之类的数据库基本表需要在界面中显示出来
计划在swt controls下的table中显示
相应的有添加,修改,删除功能,然后在table中反应出来,进而修改数据库
可小弟水平有限,上网找了一下资料 也都是jtable显示数据库的教程和例子
不知道有没有高手有类似经验 swt下的table能不能达到我想要的效果
用什么方法可以?
希望能得到指导 不胜感激
15 个解决方案
#1
让单元格可编辑,然后要么做个提交按钮来统一修改数据,要么直接监听数据更新事件,只要一更新数据就提交数据库,不过这样的话跟数据库交流太过频繁,所以还是建议第一种方式。
#2
table的编辑还要自己实现,建议使用tableviewer,你的操作基本都支持,要好用的多。
和数据库的交互只要你在相应的事件中实现即可。
和数据库的交互只要你在相应的事件中实现即可。
#3
顶2楼的
我也是用tableViewer做的,很方便
我也是用tableViewer做的,很方便
#4
table是swt下的一个控件 运行出来好象不能编辑
#5
能具体一点么 或者有什么实例?
#6
使用tableviewer实现很简单的,在contentProvider中加入你的模型object到row的映射,使用labelProvider加入样式。。。
#7
内容器和标签器 或者说table viewer 怎么使用不太明白
哪位能举个在数据库中读记录显示到table中
然后用户能通过button之类的事件修改,添加,删除table中的中的记录
继而达到修改数据库的作用
用table是因为不想让用户直接进入数据库对相应的基本表操作
#8
谢谢几位的热心
如果问题能顺利解决 我会加分
如果问题能顺利解决 我会加分
#9
tableView
VisitClockView:
标签器: TableViewerLableProvider
VisitClockView:
public class VisitClockView extends ViewPart {
private TableViewer tableViewer;
private Shell shell;
private Action reserveAction,rebesparkAction,clockAction,outAction,editAction,refreshAction,rightAction,deleteAction;
public static final int COMPANYNAME = 0;
public static final int VISITORNAME = 1;
public static final int VISITORCOUNT = 2;
public static final int BOOKTIME = 3;
public static final int NEEDTOSEE = 4;
public static final int VISITISSUE = 5;
public static final int BOOKBY = 6;
public static final int BOOKINGTIME = 7;
public static final int SHOWUPTIME = 8;
public static final int DEPOSITIDTYPE = 9;
public static final String ID = "com.dsrcom.ecq.dsreli_client.brucevisitmanager.views.VisitClockView"; //$NON-NLS-1$
/**
* Create contents of the view part
* @param parent
*/
@Override
public void createPartControl(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new FillLayout());
tableViewer = new TableViewer(container,SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
/**
* 通过TableViewer中的Table对其布局
*/
Table table = tableViewer.getTable();
table.setHeaderVisible(true); //显示表头
table.setLinesVisible(true); //显示表格线
TableLayout tLayout = new TableLayout();
table.setLayout(tLayout);
/**
* 建立TableViewer中的列
*/
tLayout.addColumnData(new ColumnWeightData(40));
TableColumn col0 = new TableColumn(table,SWT.NONE);
tableViewer.setSorter(new MyTableSort());
col0.setText("公司名称");
col0.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(COMPANYNAME);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(40));
TableColumn col1 = new TableColumn(table,SWT.NONE);
col1.setText("访客");
col1.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(VISITORNAME);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(20));
TableColumn col2 = new TableColumn(table,SWT.NONE);
col2.setText("来访人数");
col2.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(VISITORCOUNT);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(50));
TableColumn col3 = new TableColumn(table,SWT.NONE);
col3.setText("预约会见时间");
col3.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(BOOKTIME);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(20));
TableColumn col4 = new TableColumn(table,SWT.NONE);
col4.setText("来访对象");
col4.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(NEEDTOSEE);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(40));
TableColumn col5 = new TableColumn(table,SWT.NONE);
col5.setText("来访事由");
col5.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(VISITISSUE);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(20));
TableColumn col6 = new TableColumn(table,SWT.NONE);
col6.setText("预约人");
col6.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(BOOKBY);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(40));
TableColumn col7 = new TableColumn(table,SWT.NONE);
col7.setText("输入时间");
col7.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(BOOKINGTIME);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(40));
TableColumn col8 = new TableColumn(table,SWT.NONE);
col8.setText("到达时间");
col8.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(SHOWUPTIME);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(50));
TableColumn col9 = new TableColumn(table,SWT.NONE);
col9.setText("访客暂存证件");
col9.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(DEPOSITIDTYPE);
tableViewer.refresh();
}
});
tableViewer.setContentProvider(new TableViewerContentProvider()); //内容器
tableViewer.setLabelProvider(new TableViewerLableProvider()); //标签器
// List inputObj = VisitInformationFactory.getInformations();
// tableViewer.setInput(inputObj);
/**
*
* 创建右键菜单和工具栏
*/
createActions();
hookContextMenu();
contributeToActionBars();
hookClickAction();
init();
}
}
标签器: TableViewerLableProvider
public class TableViewerLableProvider implements ITableLabelProvider {
public void dispose() {
// TODO 自动生成方法存根
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// TODO 自动生成方法存根
}
public Image getColumnImage(Object element, int columnIndex) {
// TODO 自动生成方法存根
return null;
}
public String getColumnText(Object element, int columnIndex) {
VisitInformation visitInformation = (VisitInformation) element;
if (columnIndex == 0) {
if(visitInformation.getComanyName() == null) {
return "";
} else {
return visitInformation.getComanyName(); //公司名称
}
}
if (columnIndex == 1) {
return visitInformation.getVisitorName(); //访客对象
}
if (columnIndex == 2) {
return visitInformation.getVisitorCount().toString(); //来访人数
}
if (columnIndex == 3) {
/**
* DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
format.format(date);
textInputTime.setText(format.format(date).toString());
*/
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return format.format(visitInformation.getBookTime()).toString();
// return visitInformation.getBookTime().toString(); //预约会见时间
}
if (columnIndex == 4) {
return visitInformation.getNeedToSee(); //来访对象
}
if (columnIndex == 5) {
return visitInformation.getVisitIssue(); //来访事由
}
if (columnIndex == 6) {
return visitInformation.getBookBy(); //预约人
}
if (columnIndex == 7) {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return format.format(visitInformation.getBookingTime()).toString(); //输入时间
}
if (columnIndex == 8) {
if(visitInformation.getShowUpTime() == null) {
return null;
} else {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return format.format(visitInformation.getShowUpTime()).toString(); //到达时间
}
}
if (columnIndex == 9) {
if(visitInformation.getDepositIDType() == null) {
return "";
} else {
return visitInformation.getDepositIDType(); //访客暂存证件
}
}
return "";
}
public void addListener(ILabelProviderListener listener) {
}
public boolean isLabelProperty(Object element, String property) {
return false;
}
public void removeListener(ILabelProviderListener listener) {
}
}
#10
内容器:
TableViewerContentProvider
public class TableViewerContentProvider implements IStructuredContentProvider {
public Object[] getElements(Object element) {
if(element instanceof List) {
return ((List) element).toArray();
} else {
return new Object[0];
}
}
public void dispose() {
// TODO 自动生成方法存根
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// TODO 自动生成方法存根
}
}
#11
// List inputObj = VisitInformationFactory.getInformations();
// tableViewer.setInput(inputObj);
这两行的意思是得到数据库表中的所有的数据,并加入到tableViewer中
#12
没注释 看不懂
#13
是不是把数据库中的数据封装后赋给inputObj吗?
为什么网上很多的帖子不给出如何得到数据库数据的步骤呢 都是用一个工厂来获取数据 我是菜鸟 搞不懂
为什么网上很多的帖子不给出如何得到数据库数据的步骤呢 都是用一个工厂来获取数据 我是菜鸟 搞不懂
#14
建议使用tableviewer 这个可以实现 建议你最好买本书 熟悉一下吧 什么都明白了。 呵呵
#15
我也正好有需求,谢谢各位
#1
让单元格可编辑,然后要么做个提交按钮来统一修改数据,要么直接监听数据更新事件,只要一更新数据就提交数据库,不过这样的话跟数据库交流太过频繁,所以还是建议第一种方式。
#2
table的编辑还要自己实现,建议使用tableviewer,你的操作基本都支持,要好用的多。
和数据库的交互只要你在相应的事件中实现即可。
和数据库的交互只要你在相应的事件中实现即可。
#3
顶2楼的
我也是用tableViewer做的,很方便
我也是用tableViewer做的,很方便
#4
table是swt下的一个控件 运行出来好象不能编辑
#5
能具体一点么 或者有什么实例?
#6
使用tableviewer实现很简单的,在contentProvider中加入你的模型object到row的映射,使用labelProvider加入样式。。。
#7
内容器和标签器 或者说table viewer 怎么使用不太明白
哪位能举个在数据库中读记录显示到table中
然后用户能通过button之类的事件修改,添加,删除table中的中的记录
继而达到修改数据库的作用
用table是因为不想让用户直接进入数据库对相应的基本表操作
#8
谢谢几位的热心
如果问题能顺利解决 我会加分
如果问题能顺利解决 我会加分
#9
tableView
VisitClockView:
标签器: TableViewerLableProvider
VisitClockView:
public class VisitClockView extends ViewPart {
private TableViewer tableViewer;
private Shell shell;
private Action reserveAction,rebesparkAction,clockAction,outAction,editAction,refreshAction,rightAction,deleteAction;
public static final int COMPANYNAME = 0;
public static final int VISITORNAME = 1;
public static final int VISITORCOUNT = 2;
public static final int BOOKTIME = 3;
public static final int NEEDTOSEE = 4;
public static final int VISITISSUE = 5;
public static final int BOOKBY = 6;
public static final int BOOKINGTIME = 7;
public static final int SHOWUPTIME = 8;
public static final int DEPOSITIDTYPE = 9;
public static final String ID = "com.dsrcom.ecq.dsreli_client.brucevisitmanager.views.VisitClockView"; //$NON-NLS-1$
/**
* Create contents of the view part
* @param parent
*/
@Override
public void createPartControl(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new FillLayout());
tableViewer = new TableViewer(container,SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
/**
* 通过TableViewer中的Table对其布局
*/
Table table = tableViewer.getTable();
table.setHeaderVisible(true); //显示表头
table.setLinesVisible(true); //显示表格线
TableLayout tLayout = new TableLayout();
table.setLayout(tLayout);
/**
* 建立TableViewer中的列
*/
tLayout.addColumnData(new ColumnWeightData(40));
TableColumn col0 = new TableColumn(table,SWT.NONE);
tableViewer.setSorter(new MyTableSort());
col0.setText("公司名称");
col0.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(COMPANYNAME);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(40));
TableColumn col1 = new TableColumn(table,SWT.NONE);
col1.setText("访客");
col1.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(VISITORNAME);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(20));
TableColumn col2 = new TableColumn(table,SWT.NONE);
col2.setText("来访人数");
col2.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(VISITORCOUNT);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(50));
TableColumn col3 = new TableColumn(table,SWT.NONE);
col3.setText("预约会见时间");
col3.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(BOOKTIME);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(20));
TableColumn col4 = new TableColumn(table,SWT.NONE);
col4.setText("来访对象");
col4.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(NEEDTOSEE);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(40));
TableColumn col5 = new TableColumn(table,SWT.NONE);
col5.setText("来访事由");
col5.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(VISITISSUE);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(20));
TableColumn col6 = new TableColumn(table,SWT.NONE);
col6.setText("预约人");
col6.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(BOOKBY);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(40));
TableColumn col7 = new TableColumn(table,SWT.NONE);
col7.setText("输入时间");
col7.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(BOOKINGTIME);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(40));
TableColumn col8 = new TableColumn(table,SWT.NONE);
col8.setText("到达时间");
col8.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(SHOWUPTIME);
tableViewer.refresh();
}
});
tLayout.addColumnData(new ColumnWeightData(50));
TableColumn col9 = new TableColumn(table,SWT.NONE);
col9.setText("访客暂存证件");
col9.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
((MyTableSort) tableViewer.getSorter()).doSort(DEPOSITIDTYPE);
tableViewer.refresh();
}
});
tableViewer.setContentProvider(new TableViewerContentProvider()); //内容器
tableViewer.setLabelProvider(new TableViewerLableProvider()); //标签器
// List inputObj = VisitInformationFactory.getInformations();
// tableViewer.setInput(inputObj);
/**
*
* 创建右键菜单和工具栏
*/
createActions();
hookContextMenu();
contributeToActionBars();
hookClickAction();
init();
}
}
标签器: TableViewerLableProvider
public class TableViewerLableProvider implements ITableLabelProvider {
public void dispose() {
// TODO 自动生成方法存根
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// TODO 自动生成方法存根
}
public Image getColumnImage(Object element, int columnIndex) {
// TODO 自动生成方法存根
return null;
}
public String getColumnText(Object element, int columnIndex) {
VisitInformation visitInformation = (VisitInformation) element;
if (columnIndex == 0) {
if(visitInformation.getComanyName() == null) {
return "";
} else {
return visitInformation.getComanyName(); //公司名称
}
}
if (columnIndex == 1) {
return visitInformation.getVisitorName(); //访客对象
}
if (columnIndex == 2) {
return visitInformation.getVisitorCount().toString(); //来访人数
}
if (columnIndex == 3) {
/**
* DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
format.format(date);
textInputTime.setText(format.format(date).toString());
*/
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return format.format(visitInformation.getBookTime()).toString();
// return visitInformation.getBookTime().toString(); //预约会见时间
}
if (columnIndex == 4) {
return visitInformation.getNeedToSee(); //来访对象
}
if (columnIndex == 5) {
return visitInformation.getVisitIssue(); //来访事由
}
if (columnIndex == 6) {
return visitInformation.getBookBy(); //预约人
}
if (columnIndex == 7) {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return format.format(visitInformation.getBookingTime()).toString(); //输入时间
}
if (columnIndex == 8) {
if(visitInformation.getShowUpTime() == null) {
return null;
} else {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return format.format(visitInformation.getShowUpTime()).toString(); //到达时间
}
}
if (columnIndex == 9) {
if(visitInformation.getDepositIDType() == null) {
return "";
} else {
return visitInformation.getDepositIDType(); //访客暂存证件
}
}
return "";
}
public void addListener(ILabelProviderListener listener) {
}
public boolean isLabelProperty(Object element, String property) {
return false;
}
public void removeListener(ILabelProviderListener listener) {
}
}
#10
内容器:
TableViewerContentProvider
public class TableViewerContentProvider implements IStructuredContentProvider {
public Object[] getElements(Object element) {
if(element instanceof List) {
return ((List) element).toArray();
} else {
return new Object[0];
}
}
public void dispose() {
// TODO 自动生成方法存根
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// TODO 自动生成方法存根
}
}
#11
// List inputObj = VisitInformationFactory.getInformations();
// tableViewer.setInput(inputObj);
这两行的意思是得到数据库表中的所有的数据,并加入到tableViewer中
#12
没注释 看不懂
#13
是不是把数据库中的数据封装后赋给inputObj吗?
为什么网上很多的帖子不给出如何得到数据库数据的步骤呢 都是用一个工厂来获取数据 我是菜鸟 搞不懂
为什么网上很多的帖子不给出如何得到数据库数据的步骤呢 都是用一个工厂来获取数据 我是菜鸟 搞不懂
#14
建议使用tableviewer 这个可以实现 建议你最好买本书 熟悉一下吧 什么都明白了。 呵呵
#15
我也正好有需求,谢谢各位