如何使用swt向表中添加行

She*_*har 2 java swt

我正在学习摇摆,并且对于在桌子上插入行有一个疑问.我的要求是我必须通过按添加按钮添加新行.但我无法继续.请找到以下代码:

如果有人知道请帮帮我....

{public class TableShellExample {


Display d;
 Shell s;
 TableViewer tableViewer;
 CellEditor cellEditor;

 TableShellExample(){
  d = new Display();
  s = new Shell();
  s.setSize(250,250);
  s.setText("Table Shell Example");

  GridLayout g1 = new GridLayout();
  g1.numColumns = 3;
  s.setLayout(g1);
  final Table table = new Table(s,SWT.BORDER |SWT.CHECK|SWT.MULTI | SWT.FULL_SELECTION);
  GridData gd = new GridData(GridData.FILL_BOTH);
  gd.horizontalSpan = 3;
  table.setLayoutData(gd);
  table.setHeaderVisible(true);

  TableColumn tc1 = new TableColumn(table, SWT.LEFT);
  TableColumn tc2 = new TableColumn(table,SWT.CENTER);
  TableColumn tc3 = new TableColumn(table,SWT.CENTER);
  tc1.setText("FIRST NAME");
  tc2.setText("LAST NAME");
  tc3.setText("ADDRESS");
  tc1.setWidth(70);
     tc2.setWidth(70);
     tc3.setWidth(80);
  TableItem it1 = new TableItem(table,SWT.NONE);
  it1.setText(new String[]{"aaa","bbb","pune"});
  TableItem it2 = new TableItem(table,SWT.NONE);
  it2.setText(new String[]{"aaa","bbb","pune"});
  TableItem it3 = new TableItem(table,SWT.NONE);
  it3.setText(new String[]{"aaa","bbb","pune"});

  //tableViewer = new TableViewer(table);
  //tableViewer.setColumnProperties(tc1);
  //tableViewer.setContentProvider(new IContentProvider());
  //tableViewer.setLabelProvider(new TableLabelProvider());

  CellEditor[] editors = new CellEditor[2];
  //editors[0] = new TextCellEditor(table);
  //editors[1] = new TextCellEditor(table);
  //tableViewer.setCellEditors(editors);
  //tableViewer.setCellModifier(new ICellModifier());


  final Text input = new Text(s, SWT.SINGLE | SWT.BORDER);
     input.setTextLimit(5);
     final Button searchBtn = new Button(s, SWT.BORDER | SWT.PUSH);
     searchBtn.setText("Search");
  searchBtn.addSelectionListener(new SelectionAdapter() {
  public void widgetSelected(SelectionEvent e){
   TableItem[] tia = table.getItems();
   for(int i=0;i<tia.length;i++){
    tia[i].getText();
     //tia[i].setBackground(new Color(d, 129, 178, 127));
    //}


   }
  }

  });
  final Button addButton = new Button(s,SWT.BORDER | SWT.PUSH);
  addButton.setText("Add Row");
  addButton.setToolTipText("for addind a new row");
  addButton.addListener(SWT.Selection, new Listener() {

   public void handleEvent(Event arg0) {
    TableEditor te = new TableEditor(table);
    te.grabHorizontal = true;
    te.grabVertical = true;
    te.getItem();
    TableItem ti = table.getItem(0);
    ti.getText();


   }
  });
  s.open();
     while (!s.isDisposed()) {
       if (!d.readAndDispatch())
         d.sleep();
     }
     d.dispose();
 }
 public Vector rowToAdd() {
  Vector defaultRow = new Vector();
  defaultRow.add("column1");
  defaultRow.add("column1");
  return defaultRow;
  }

 public static void main(String[] argv){
  new TableShellExample();
 }
}
Run Code Online (Sandbox Code Playgroud)

Dyl*_*lan 10

这是一个简单的工作示例,说明在按下按钮时如何向表中添加项目:

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    RowLayout layout = new RowLayout(SWT.VERTICAL);
    layout.fill = true;
    shell.setLayout(layout);
    shell.setSize(200, 200);
    final Table table = new Table(shell, SWT.BORDER | SWT.MULTI);
    final Text text = new Text(shell, SWT.SINGLE | SWT.BORDER);
    text.setText("blahblah text");
    Button button = new Button(shell, SWT.PUSH);
    button.setText("Push me");

    // this is the code you want
    button.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            TableItem item = new TableItem(table, SWT.NONE);
            item.setText(text.getText());
        }
    });

    for (int i = 0; i < 5; i++) {
        TableItem item = new TableItem(table, SWT.NONE);
        item.setText("*** Item " + i + "***");
    }
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}
Run Code Online (Sandbox Code Playgroud)

如果必须使用TableViewer系统添加项目,则需要修改传递给查看器的任何Object作为其输入.如果您使用an IStructuredContentProvider作为查看者的内容提供者,则该getElements方法返回一个数组,该数组继续成为表的行.要在更改输入后更新它,只需调用viewer.refresh()