2013-08-23 3 views
-4

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 

} 
     } 
+3

문제를 재현하는 데 필요한 부분을 정리하십시오. 아무도이 많은 코드를 헤치고 싶어하지 않을 것입니다. –

+0

내가 원하는 것을 실제로 얻지 못했거나 문제가있는 곳에서 중복이 이미'public static void removeDuplicates (List list)'에서 제거되었습니다. – Theolodis

+0

@Theolodis 메서드 public static void removeDuplicates (List list) 실행되지 않습니다. , 내가 그것을 수정하려고하면 어떻게 추가 또는 작동하도록 제거 할 수 있습니다. – ange

답변

0

사용 ArrayList 또는 Vectorcontains 방법을 사용하여 확인합니다.

Vector<String> v = new Vector<String>(); 
v.add("apple"); 
v.add("mango"); 

if(v.contains("apple")) { 
    //element already in list, do something 
} 
else { 
    //element not in list, do something 
} 
+0

예가 있습니까? , 왜냐하면 나는 자바가 새로운 것입니다. – ange

+0

제발 도와주세요, 당신의 아이디어를 사용하고 싶습니다. 그러나 어떻게하는지 모르겠습니다. – ange

관련 문제