gpt4 book ai didi

java - 如何使用swt向表中添加一行

转载 作者:行者123 更新时间:2023-12-04 20:49:28 25 4
gpt4 key购买 nike

我正在学习 swing,并且对向表中插入行有一个疑问。我的要求是我必须通过按添加按钮来添加一个新行。但我无法继续。请找到下面的代码:

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

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

最佳答案

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

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

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

关于java - 如何使用swt向表中添加一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4665573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com