-1
メソッドにリスナーを実装するのに苦労しています。Javaのクラス内のメソッドにリスナーを追加する
テーブルを作成する方法fillTableRoWData()
があります。このメソッドは、2つのif条件の中で同時に呼び出されます。
私はすべての値をhahMapに保存しました。
問題は、コンボボックスの値を更新するときです。第2の条件の値のみが更新されます。
条件が更新された場合にメソッドに通知し、関連するhashMap位置にデータを追加するリスナーを追加します。私はどのTableColoumnにデータを入力すると
はまた、データはHashMapのあなたは本当にTableViewer
EditingSupport
とを使用してになります
package view;
import java.util.HashMap;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Display;
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;
public class TableShellExample {
Display d;
Shell s;
Table table;
private Text text_1, text_2, text_3, text_4;
private HashMap<Integer, String> list2 = new HashMap<>();
private HashMap<Integer, HashMap<Integer, String>> list3 = new HashMap<>();
private static Integer a = 0;
private static Integer q = 0;
TableShellExample() {
d = new Display();
s = new Shell(d);
s.setSize(250, 200);
s.setText("A Table Shell Example");
Table table = new Table(s, SWT.BORDER);
String[] titles = { "Theart Name", "Category", "Satus", "Priority",
"Description", "Justification" };
for (int i = 0; i < titles.length; i++) {
TableColumn column = new TableColumn(table, SWT.NONE);
column.setWidth(150);
column.setText(titles[i]);
}
table.setHeaderVisible(true);
fillRows("1","2","3");
s.open();
while (!s.isDisposed()) {
if (!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
private void fillRows(String shortdesc, String categ, String descp) {
TableItem item = new TableItem(table, SWT.NONE);
// for Threat_Name
TableEditor editor = new TableEditor(table);
text_1 = new Text(table, SWT.READ_ONLY);
editor.grabHorizontal = true;
editor.setEditor(text_1, item, 0);
text_1.setText(shortdesc);
// list2.put(a++, text_1.getText());
System.out.println(a + " : " + list2);
// For Category_Name
//editor = new TableEditor(table);
text_2 = new Text(table, SWT.READ_ONLY);
editor.grabHorizontal = true;
editor.setEditor(text_2, item, 1);
text_2.setText(categ);
// list2.put(a++, text_2.getText());
System.out.println(a + " : " + list2);
// For Status_Name
editor = new TableEditor(table);
final Combo Status_Combo = new Combo(table, SWT.READ_ONLY);
Status_Combo.add("Mitigated");
Status_Combo.add("Not Applicable");
Status_Combo.add("Not Started");
Status_Combo.add("Needs Investigation");
editor.grabHorizontal = true;
editor.setEditor(Status_Combo, item, 2);
Status_Combo.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
System.out.println(Status_Combo.getText());
}
public void widgetDefaultSelected(SelectionEvent e) {
System.out.println(Status_Combo.getText());
}
});
// For Priority_Name
editor = new TableEditor(table);
final Combo priority_Combo = new Combo(table, SWT.READ_ONLY);
priority_Combo.add("High");
priority_Combo.add("Medium");
priority_Combo.add("Low");
editor.grabHorizontal = true;
editor.setEditor(priority_Combo, item, 3);
priority_Combo.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
System.out.println(priority_Combo.getText());
}
public void widgetDefaultSelected(SelectionEvent e) {
System.out.println(priority_Combo.getText());
}
});
// For Descrption_Name
editor = new TableEditor(table);
text_3 = new Text(table, SWT.READ_ONLY);
editor.grabHorizontal = true;
editor.setEditor(text_3, item, 4);
text_3.setText(descp);
// list2.put(a++, text_3.getText());
System.out.println(a + " : " + list2);
System.out.println(list3);
// For justification
editor = new TableEditor(table);
text_4 = new Text(table, SWT.MULTI | SWT.BORDER | SWT.WRAP
| SWT.V_SCROLL);
editor.grabHorizontal = true;
editor.setEditor(text_4, item, 5);
list3.put(q++, new HashMap() {
{
put(a, text_1.getText());
put((a + 1), text_2.getText());
put((a + 2), text_3.getText());
}
});
}
public static void main(String[] argv) {
new TableShellExample();
}
}
説明のない票は役に立たない。 また、ヘルプやアドバイスを求めて求めている新しいユーザーを阻止する可能性もあります。 新しいユーザーの投票の問題はできるだけ避けるべきだと思います。 私は反対にすることをお勧めします:ダウン投票なしの説明。 – c0der
これはかなり長いコードで、問題の原因がわかりません。問題を示すために[MCVE]を投稿し、あなたの手助けをより簡単にすることを検討してください。 – c0der
私はコードを編集しました。私が望むのは、comboBoxの値をhashmap値で更新するよりも値を変更する場合です。@ c0der –