在swt程序中,A窗体有2个表格a,b.如何点击a的某一行,就可以获得a的数据在b中实现.
请各位高手请教.如果有可能,请给一些程序例子参考一下,OK?

解决方案 »

  1.   

    首先,你的问题问的不清楚。
    什么叫:a的数据在b中实现?
    如果是用2个JTable的数据互相传递的话,好像有这样一个方法getElementAt(int index)
    获得以后删除当前a表中的第i个元素并把他传递到b表中
      

  2.   

    是正行还是某个单元格?
    单元格的话可以参考
    int   iRowIdx   =   commoditytable.getSelectedRow();
    int   iColIdx   =   commoditytable.getSelectedColumn();
    String obj = (String)commoditytable.getValueAt(iRowIdx, iColIdx);
      

  3.   

    试试时间监听呢,我记得SWT里面的table有一个事件是以下方法,是对selection的监听
    table.getVerticalBar().addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(final SelectionEvent e) {
    //这里写你自己的处理
    }
    });
    或者你对table做一个鼠标双击事件监听,如下:
    table.addMouseListener(new MouseAdapter() {
    public void mouseDoubleClick(final MouseEvent e) {
                                    //这里写你自己的处理 
    }
    });
      

  4.   

    在下面的代码中,怎样实现从table中获得数据,在table_1中显示出来import org.eclipse.swt.layout.GridLayout;
    import org.eclipse.swt.widgets.Canvas;
    import org.eclipse.swt.widgets.Composite;
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.events.SelectionAdapter;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.graphics.Point;
    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;
    import com.swtdesigner.SWTResourceManager;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Label;public class Ts { private Text text_1;
    private Text text;
    private Table table_1;
    private Table table;
    private Shell sShell = null; public static void main(String[] args) {
    Display display = Display.getDefault();
    Ts thisClass = new Ts();
    thisClass.createSShell();
    thisClass.sShell.open(); while (!thisClass.sShell.isDisposed()) {
    if (!display.readAndDispatch())
    display.sleep();
    }
    display.dispose();
    } private void createSShell() {
    sShell = new Shell();
    sShell.setText("Shell");
    sShell.setSize(new Point(700, 500));

    table = new Table(sShell, SWT.FULL_SELECTION | SWT.BORDER);
    table.setBackgroundMode(SWT.INHERIT_FORCE);
    table.setLinesVisible(true);
    table.setHeaderVisible(true);
    table.setBounds(10, 195, 238, 261); final TableColumn newColumnTableColumn = new TableColumn(table, SWT.NONE);
    newColumnTableColumn.setWidth(61);
    newColumnTableColumn.setText("行号"); final TableColumn usersname = new TableColumn(table, SWT.NONE);
    usersname.setWidth(88);
    usersname.setText("姓名"); final TableColumn sex = new TableColumn(table, SWT.NONE);
    sex.setWidth(80);
    sex.setText("性别"); final TableItem newItemTableItem = new TableItem(table, SWT.BORDER);
    newItemTableItem.setText(2, "男");
    newItemTableItem.setText(1, "梦幻");
    newItemTableItem.setText(0,"1"); final TableItem newItemTableItem_2 = new TableItem(table, SWT.BORDER);
    newItemTableItem_2.setText(2, "男");
    newItemTableItem_2.setText(1, "无名");
    newItemTableItem_2.setText(0, "2"); final TableItem newItemTableItem_3 = new TableItem(table, SWT.BORDER);
    newItemTableItem_3.setText(2, "男");
    newItemTableItem_3.setText(1, "无极");
    newItemTableItem_3.setText("3");

    table_1 = new Table(sShell, SWT.BORDER);
    table_1.setLinesVisible(true);
    table_1.setHeaderVisible(true);
    table_1.setBounds(254, 195, 428, 261); final TableColumn newColumnTableColumn_3 = new TableColumn(table_1, SWT.NONE);
    newColumnTableColumn_3.setWidth(71);
    newColumnTableColumn_3.setText("姓名"); final TableColumn newColumnTableColumn_4 = new TableColumn(table_1, SWT.NONE);
    newColumnTableColumn_4.setWidth(81);
    newColumnTableColumn_4.setText("性别"); final TableItem newItemTableItem_1 = new TableItem(table_1, SWT.BORDER);
    final Label label = new Label(sShell, SWT.NONE);
    label.setFont(SWTResourceManager.getFont("", 12, SWT.NONE));
    label.setText("姓名");
    label.setBounds(22, 21, 42, 20); final Label label_1 = new Label(sShell, SWT.NONE);
    label_1.setFont(SWTResourceManager.getFont("", 12, SWT.NONE));
    label_1.setText("性别");
    label_1.setBounds(22, 57, 42, 20); text = new Text(sShell, SWT.BORDER);
    text.setBounds(64, 16, 117, 25); text_1 = new Text(sShell, SWT.BORDER);
    text_1.setBounds(64, 52, 117, 25);

    }}
      

  5.   

    如果做类似的,建议用JFace的TableViewer他也可以添加选择监听器,可以对选择德基和选取第一个元素,这个元素经过强制转型就是表格中显示的选中的那个对象。
    由于是MVC设计,你可以将他的子对象集合直接设置给 下面的TableViewer.如果你需要连接服务器端的话,就调用后,将返回的集合设置给下面的TableViewer。