How to add a row to a table using swt

人走茶凉 提交于 2019-12-06 11:10:45

Here's a simple working example of how to add items to a table when a button is pressed:

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();
}

If you must use the TableViewer system to add items, you need to modify whatever Object is passed into the viewer as its input. If you use an IStructuredContentProvider as your viewer's content provider, the getElements method returns an array that goes on to become your table's rows. To update it after a change to the input, just call viewer.refresh()

Easy way for learning :Text field record add in Table and selected row can display on text field using SWT


package rcp_demo.Views;

import org.eclipse.swt.widgets.Composite;

public class TaskView extends ViewPart {

    public static Table table;
    public static TableViewer tableViewer;
    public static TableItem std_item;
    private  Text txt_1,txt_2,txt_3;

    Student stud=new Student();
    List<Student> std=new ArrayList<Student>();

    public TaskView() {
        setTitleImage(SWTResourceManager.getImage("D:\\Icon\\Tasksview.png"));
    }

    @Override
    public void createPartControl(Composite parent) {
        parent.setLayout(null);
        //Three Text
        txt_1 = new Text(parent, SWT.BORDER);
        txt_1.setBounds(21, 10, 76, 19);

        txt_2 = new Text(parent, SWT.BORDER);
        txt_2.setBounds(119, 10, 76, 19);

        txt_3 = new Text(parent, SWT.BORDER);
        txt_3.setBounds(222, 10, 76, 19);

        tableViewer = new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION);
        table = tableViewer.getTable();

        //how to pass values of a selected row from tableviewer to a text box in SWT

         table.addListener(SWT.Selection, new Listener()
            {
                @Override
                public void handleEvent(Event e) {
                     Table table = (Table) e.widget;
                        TableItem item = table.getItem(table.getSelectionIndex());

                        /* Fill the texts */
                        for (int col = 0; col < table.getColumnCount(); col++)
                        {
                            if(col==0)
                            {
                                txt_1.setText(item.getText(col));
                            }
                            else if(col==1)
                            {
                                txt_2.setText(item.getText(col));
                            }
                            else if(col==2)
                            {
                                txt_3.setText(item.getText(col));
                            }
                        }
                }
            });
        table.setBounds(21, 47, 290, 213);
        table.setHeaderVisible(true);
        table.setLinesVisible(true);

        //ADD Button

        Button btnAdd = new Button(parent, SWT.NONE);
        btnAdd.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {

                std.add(new Student(txt_1.getText(),txt_2.getText(),txt_3.getText()));
                std_item=new TableItem(table, SWT.NONE);
                std_item.setText(0,txt_1.getText());
                std_item.setText(1,txt_2.getText());
                std_item.setText(2,txt_3.getText());

            }
        });
        btnAdd.setBounds(304, 10, 68, 23);
        btnAdd.setText("Add");

                //Dynamic add column Name using TableViewerColumn 

                String[] Col_names={"Stud_id","Stud_Name","Stud_Gender"};
                for(int i=0;i<Col_names.length;i++)
                {
                    TableViewerColumn tableViewerColumn = new TableViewerColumn(tableViewer, SWT.NONE);
                    TableColumn tblclmnNewColumn = tableViewerColumn.getColumn();
                    tblclmnNewColumn.setWidth(100);
                    tblclmnNewColumn.setText(Col_names[i]);

                }
                //(class: Student)static Item/Data Add

                std.add(new Student("110","Deni","Male"));
                std.add(new Student("111","Hina","Female"));
                std.add(new Student("112","Jem","Male"));


                for(Student s:std)
                {
                    TableItem std_item=new TableItem(table, SWT.NONE);
                    std_item.setText(0,s.getStd_id());
                    std_item.setText(1,s.getStd_nm());
                    std_item.setText(2,s.getStd_gender());
                }

    }
      public TableViewer getViewer() {
          return tableViewer;
  }
    @Override
    public void setFocus() {
        tableViewer.getControl().setFocus();

    }
}

Class name : Student.java


package rcp_demo.TableView;

public class Student {

private String std_id;
private String std_nm;
private String std_gender;

public Student() {
    // TODO Auto-generated constructor stub
}
public Student(String sid,String snm,String sgender) {
    std_id=sid;
    std_nm=snm;
    std_gender=sgender;
}

public String getStd_id() {
    return std_id;
}
public void setStd_id(String std_id) {
    this.std_id = std_id;
}
public String getStd_nm() {
    return std_nm;
}
public void setStd_nm(String std_nm) {
    this.std_nm = std_nm;
}
public String getStd_gender() {
    return std_gender;
}
public void setStd_gender(String std_gender) {
    this.std_gender = std_gender;
}

}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!