Java 如何使用swt向表中添加行

Java 如何使用swt向表中添加行,java,swt,Java,Swt,我正在学习swing,对于将行插入到表中有一个疑问。 我的要求是,我必须按add按钮添加新行。但我无法继续。请查找以下代码: 如果有人知道,请帮助我 {public class TableShellExample { Display d; Shell s; TableViewer tableViewer; CellEditor cellEditor; TableShellExample(){ d = new Display(); s = new Shell(); s.s

我正在学习swing,对于将行插入到表中有一个疑问。 我的要求是,我必须按add按钮添加新行。但我无法继续。请查找以下代码:

如果有人知道,请帮助我

{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();
 }
}
{公共类表示例{
显示d;
贝壳;
TableViewer;
细胞编辑细胞编辑;
表hellexample(){
d=新显示器();
s=新外壳();
s、 设置大小(250250);
s、 setText(“表外壳示例”);
GridLayout g1=新的GridLayout();
g1.numColumns=3;
s、 setLayout(g1);
最终表格=新表格(s,SWT.BORDER | SWT.CHECK | SWT.MULTI | SWT.FULL |选择);
GridData gd=新的GridData(GridData.FILL\u二者);
gd.水平跨度=3;
表.setLayoutData(gd);
表.setheadervible(true);
TableColumn tc1=新的TableColumn(表,SWT.LEFT);
TableColumn tc2=新的TableColumn(表格,SWT.CENTER);
TableColumn tc3=新的TableColumn(表格,SWT.CENTER);
tc1.setText(“名字”);
tc2.setText(“姓氏”);
tc3.setText(“地址”);
tc1.设定宽度(70);
tc2.设定宽度(70);
tc3.设定宽度(80);
TableItem it1=新的TableItem(表,SWT.NONE);
it1.setText(新字符串[]{“aaa”、“bbb”、“pune”});
TableItem it2=新的TableItem(表,SWT.NONE);
it2.setText(新字符串[]{“aaa”、“bbb”、“pune”});
TableItem it3=新的TableItem(表,SWT.NONE);
it3.setText(新字符串[]{“aaa”、“bbb”、“pune”});
//tableViewer=新的tableViewer(表格);
//tableViewer.setColumnProperties(tc1);
//setContentProvider(新的IContentProvider());
//setLabelProvider(新的TableLabelProvider());
CellEditor[]editors=新的CellEditor[2];
//编辑器[0]=新的TextCellEditor(表);
//编辑器[1]=新的TextCellEditor(表);
//tableViewer.SetCellEditor(编辑器);
//setCellModifier(新的ICellModifier());
最终文本输入=新文本(s,SWT.SINGLE | SWT.BORDER);
输入设置限制(5);
最终按钮搜索BTN=新按钮(s,SWT.BORDER | SWT.PUSH);
searchBtn.setText(“搜索”);
searchBtn.addSelectionListener(新的SelectionAdapter(){
公共无效WidgeSelected(SelectionEvent e){
TableItem[]tia=table.getItems();

对于(int i=0;i,下面是一个简单的工作示例,说明了在按下按钮时如何向表中添加项:

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();
}
publicstaticvoidmain(字符串[]args){
显示=新显示();
外壳=新外壳(显示);
RowLayout=新的RowLayout(SWT.VERTICAL);
layout.fill=true;
shell.setLayout(布局);
外壳。设置尺寸(200200);
最终表格=新表格(shell,SWT.BORDER | SWT.MULTI);
最终文本文本=新文本(shell,SWT.SINGLE | SWT.BORDER);
text.setText(“blahblah文本”);
按钮=新按钮(外壳,SWT.PUSH);
button.setText(“推我”);
//这就是你想要的代码
addSelectionListener(新建SelectionAdapter(){
@凌驾
公共无效WidgeSelected(SelectionEvent e){
TableItem项目=新的TableItem(表,SWT.NONE);
item.setText(text.getText());
}
});
对于(int i=0;i<5;i++){
TableItem项目=新的TableItem(表,SWT.NONE);
item.setText(“***项”+i+“***”);
}
shell.pack();
shell.open();
而(!shell.isDisposed()){
如果(!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
如果必须使用TableViewer系统添加项目,则需要修改作为输入传递到查看器的任何对象。如果使用
IsStructuredContentProvider
作为查看器的内容提供程序,则
getElements
方法将返回一个数组,该数组将成为表的行。要在更改输入,只需调用
viewer.refresh()

简易学习方法:文本字段记录加载项表和选定行 可以使用SWT在文本字段上显示



非常感谢Dylan Halperin的回复
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();

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

}