nameText (유형 텍스트)에 라이브러리 이름을 입력하고 이름이 이미 라이브러리 목록에 존재하면 버튼이 차단되고 und i 할 수 없다는 문제점이 있습니다. (메시지가 표시되고 다른 이름을 쓸 것이라고 알립니다)기존 이름을 미리 작성하여 미리 작성하는 방법
treeSet 또는 arrayList를 사용하는 방법을 정확히 모릅니다. 코드는 다음과 같습니다 맥락에서
public static void removeDuplicates(List list)
{
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
}
:
public class EditLibraryDialog extends Dialog implements ItemListener {
ILibrary library;
Text pathText;
Text nameText;
static boolean okPressed;
public EditLibraryDialog(Shell parent) {
super(parent);
library = null;
}
public EditLibraryDialog(Shell parent, ILibrary library) {
super(parent);
this.library = library;
}
public ILibrary getLibrary() {
return library;
}
public boolean open() {
return open(null);
}
public boolean open(String message) {
final Shell parent = getParent();
final Shell dialog = new Shell(parent, SWT.DIALOG_TRIM
| SWT.APPLICATION_MODAL);
okPressed = false;
dialog.setSize(700, 150);
dialog.setLayout(new GridLayout(4, false));
GridData gridData = new GridData();
dialog.setLayoutData(gridData);
Label l;
if (message != null) {
l = new Label(dialog, SWT.NULL);
l.setText(message);
}
l = new Label(dialog, SWT.NULL);
l.setText("Name");
nameText = new Text(dialog, SWT.BORDER);
l = new Label(dialog, SWT.NULL);
l = new Label(dialog, SWT.NULL);
l = new Label(dialog, SWT.NULL);
l.setText("Path");
pathText = new Text(dialog, SWT.BORDER);
});
if (library == null) {
dialog.setText("Add Library");
} else {
dialog.setText("Edit Library");
nameText.setText(library.getName());
pathText.setText(library.getPath());
}
final Button okButton = new Button(dialog, SWT.PUSH);
okButton.setText("Ok");
GridData gridData4 = new GridData(GridData.END, GridData.CENTER, false,
false);
gridData4.horizontalSpan = 3;
gridData4.horizontalIndent = 20;
okButton.setLayoutData(gridData4);
okButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String id;
if (library != null) {
id = library.getId();
} else {
id = UUID.randomUUID().toString();
}
library = new LibraryFactory().create(id, nameText.getText(),
pathText.getText());
dialog.dispose();
okPressed = true;
}});
nameText.addModifyListener(new ModifyListener() {
String lastValidText = "";
@Override
public void modifyText(ModifyEvent e) {
// avoid setting invalid values for the name text field
String textValue = ((Text) e.getSource()).getText();
if (parseName(textValue)) {
lastValidText = textValue;
okButton.setEnabled(textValue.equals("") ? false : true);
} else {
nameText.setText(lastValidText);
}
}
});
nameText.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
Pattern pattern = Pattern.compile("[\\w| ]*");
Matcher matcher = pattern.matcher(e.text);
e.doit = matcher.matches();
}
});
pathText.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
Pattern pattern = Pattern.compile("[a-zA-Z0-9_.-\\\\\\/\\$]*");
Matcher matcher = pattern.matcher(e.text);
e.doit = matcher.matches();
}
});
Button cancelButton = new Button(dialog, SWT.PUSH);
cancelButton.setText("Cancel");
cancelButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
dialog.dispose();
}
});
public static void removeDuplicates(List list)
{
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
}
if (nameText.getText().equals(""))
okButton.setEnabled(false);
JOptionPane.showMessageDialog(null,"Existed Library"); }
dialog.open();
Display display = parent.getDisplay();
while (!dialog.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
return okPressed;
}
private boolean parseName(String newText) {
return true;
}
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
}
}
문제를 재현하는 데 필요한 부분을 정리하십시오. 아무도이 많은 코드를 헤치고 싶어하지 않을 것입니다. –
내가 원하는 것을 실제로 얻지 못했거나 문제가있는 곳에서 중복이 이미'public static void removeDuplicates (List list)'에서 제거되었습니다. – Theolodis
@Theolodis 메서드 public static void removeDuplicates (List list) 실행되지 않습니다. , 내가 그것을 수정하려고하면 어떻게 추가 또는 작동하도록 제거 할 수 있습니다. – ange