u010551726 2013-05-06 10:55
浏览 349
已采纳

用SWT中的TableEidtor输入数据后,如何通过JDBC提交到数据库中

[code="java"]import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

public class TableEditorExample {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
final Table table = new Table(shell, SWT.BORDER | SWT.MULTI);
table.setLinesVisible(true);
for (int i = 0; i < 3; i++) {
TableColumn column = new TableColumn(table, SWT.NONE);
column.setWidth(100);
}
for (int i = 0; i < 3; i++) {
TableItem item = new TableItem(table, SWT.NONE);
item.setText(new String[] { "" + i, "" + i, "" + i });
}
final TableEditor editor = new TableEditor(table);
editor.horizontalAlignment = SWT.LEFT;
editor.grabHorizontal = true;
table.addListener(SWT.MouseDown, new Listener() {
public void handleEvent(Event event) {
Rectangle clientArea = table.getClientArea();
Point pt = new Point(event.x, event.y);
int index = table.getTopIndex();
while (index < table.getItemCount()) {
boolean visible = false;
final TableItem item = table.getItem(index);
for (int i = 0; i < table.getColumnCount(); i++) {
Rectangle rect = item.getBounds(i);
if (rect.contains(pt)) {
final int column = i;
final Text text = new Text(table, SWT.NONE);
Listener textListener = new Listener() {
public void handleEvent(final Event e) {
switch (e.type) {
case SWT.FocusOut:
item.setText(column, text.getText());
text.dispose();
break;
case SWT.Traverse:
switch (e.detail) {
case SWT.TRAVERSE_RETURN:
item
.setText(column, text
.getText());
//FALL THROUGH
case SWT.TRAVERSE_ESCAPE:
text.dispose();
e.doit = false;
}
break;
}
}
};
text.addListener(SWT.FocusOut, textListener);
text.addListener(SWT.Traverse, textListener);
editor.setEditor(text, item, i);
text.setText(item.getText(i));
text.selectAll();
text.setFocus();
return;
}
if (!visible && rect.intersects(clientArea)) {
visible = true;
}
}
if (!visible)
return;
index++;
}
}
});
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
[/code]

这段代码作用是用来给我的Table上添加文本框给用户输入,是我从网上找到的一段代码,但是现在不知道如何通过JDBC将输入的内容添加到数据库表中(假设有ID,Name,Age三个字段)。谢谢您的回复!

  • 写回答

1条回答 默认 最新

  • Dead_Knight 2013-05-06 11:22
    关注

    [code="java"]
    package test;

    import org.eclipse.swt.SWT;
    import org.eclipse.swt.custom.TableEditor;
    import org.eclipse.swt.graphics.Point;
    import org.eclipse.swt.graphics.Rectangle;
    import org.eclipse.swt.layout.FillLayout;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Event;
    import org.eclipse.swt.widgets.Listener;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Table;
    import org.eclipse.swt.widgets.TableColumn;
    import org.eclipse.swt.widgets.TableItem;
    import org.eclipse.swt.widgets.Text;

    public class TestTableEditor {
    public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    final Table table = new Table(shell, SWT.BORDER | SWT.MULTI);
    final Button button = new Button(shell, SWT.BORDER | SWT.MULTI);
    button.setText("Save");
    button.addListener(SWT.MouseDown, new Listener() {
    @Override
    public void handleEvent(Event arg0) {
    TableItem[] items = table.getItems();
    for(TableItem ti : items) {
    String id = ti.getText(0);
    String name = ti.getText(1);
    String age = ti.getText(2);
    }
    }
    });
    table.setLinesVisible(true);
    for (int i = 0; i < 3; i++) {
    TableColumn column = new TableColumn(table, SWT.NONE);
    column.setWidth(100);
    }
    for (int i = 0; i < 3; i++) {
    TableItem item = new TableItem(table, SWT.NONE);
    item.setText(new String[] { "" + i, "" + i, "" + i });
    }
    final TableEditor editor = new TableEditor(table);
    editor.horizontalAlignment = SWT.LEFT;
    editor.grabHorizontal = true;
    table.addListener(SWT.MouseDown, new Listener() {
    public void handleEvent(Event event) {
    Rectangle clientArea = table.getClientArea();
    Point pt = new Point(event.x, event.y);
    int index = table.getTopIndex();
    while (index < table.getItemCount()) {
    boolean visible = false;
    final TableItem item = table.getItem(index);
    for (int i = 0; i < table.getColumnCount(); i++) {
    Rectangle rect = item.getBounds(i);
    if (rect.contains(pt)) {
    final int column = i;
    final Text text = new Text(table, SWT.NONE);
    Listener textListener = new Listener() {
    public void handleEvent(final Event e) {
    switch (e.type) {
    case SWT.FocusOut:
    item.setText(column, text.getText());
    text.dispose();
    break;
    case SWT.Traverse:
    switch (e.detail) {
    case SWT.TRAVERSE_RETURN:
    item.setText(column, text.getText());
    // FALL THROUGH
    case SWT.TRAVERSE_ESCAPE:
    text.dispose();
    e.doit = false;
    }
    break;
    }
    }
    };
    text.addListener(SWT.FocusOut, textListener);
    text.addListener(SWT.Traverse, textListener);
    editor.setEditor(text, item, i);
    text.setText(item.getText(i));
    text.selectAll();
    text.setFocus();
    return;
    }
    if (!visible && rect.intersects(clientArea)) {
    visible = true;
    }
    }
    if (!visible)
    return;
    index++;
    }
    }
    });
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
    if (!display.readAndDispatch())
    display.sleep();
    }
    display.dispose();
    }
    }

    [/code]
    你的代码,我加上了button按钮,点击之后,会得到所有table数据,这时候你就可以使用jdbc插入数据库了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么