2009-05-17 4 views
0

중복없이 JTextArea에 새 문자를 추가하는 방법 ... JAVA를 사용하여 추가 JButton을 눌렀을 때입니다. 내 코드가 2 개 클래스 (Form 및 FormRunner)를 작성하여 사전에 thnx를 도울 수있는 사람을 기다리고 있습니다 ... 죄송합니다. 긴 코드 -PaLoS (초보자) JButton의에서DUPLICATION없이 추가하는 방법은 무엇입니까?

내가 정말 가장

public class Form extends JFrame{ 
    int validator = 0; 
    public String ID,Fname,Lname,Course,Year; 

    private final static String newline = "\n"; 
    private final static String newtab = "\t"; 

    List<Form> myList = new ArrayList<Form>(); 

    private JTextArea summary,result; 
    private JPanel labelPanel,summaryPanel,resultPanel; 
    private JLabel iD,fName,lName,yearL,courseL,labelIcon,labelIconS,labelM; 
    private JButton searchB,addB,editB,deleteB,updateB; 
    private String labels[] = {"ID Number :","First Name :","Last Name :","Course :","Year :"}; 
    private String namesB[] = {"Search" , "Add" , "Edit" , "Delete" , "Update" }; 
    private JTextField formTitle,id,fname,lname,year,course; 

    Form(){ 
     super("MAIN FORM: CASE STUDY"); 
     setupGUI(); 
    } 

    public void setupGUI(){ 

     Container c = getContentPane(); 
     c.setLayout(null); 
     ActionEventHandler handler = new ActionEventHandler(); 

     Insets insets = c.getInsets(); 

     formTitle = new JTextField("FILE MAINTENANCE ",53); 


      labelPanel = new JPanel(); 

//=====================  LABELS  =========================== 
enter code here 

//================================ Palos TEXT FIELDS =================== 

    id = new JTextField(20); 

    id.addKeyListener(new KeyAdapter() 
     { 
     public void keyTyped(KeyEvent ke){ 
      char char1 = ke.getKeyChar(); 
      if((!(Character.isDigit(char1))) && (char1 != '\b')){ 
        ke.consume(); 
       } 
      } 
     }); 

     id.addActionListener(handler); 

     fname = new JTextField(20); 

     fname.addKeyListener(new KeyAdapter() 
      { 
public void keyTyped(KeyEvent ke){ 
    char char1 = ke.getKeyChar(); 
     if((!(Character.isLetter(char1))) && (char1 != '\b')) { 
     ke.consume(); 
     } 
    } 
     public void keyReleased(KeyEvent e){} 
     public void keyPressed(KeyEvent e){} 
}); 
    fname.addActionListener(handler); 

    lname = new JTextField(20); 

    lname.addKeyListener(new KeyAdapter() 
    { 
     public void keyTyped(KeyEvent ke){ 
      char char1 = ke.getKeyChar(); 
    if((!(Character.isLetter(char1))) && (char1 != '\b')){ 
     ke.consume(); 
     } 
    } 
    public void keyReleased(KeyEvent e){} 
    public void keyPressed(KeyEvent e){} 
}); 
    lname.addActionListener(handler); 

    year = new JTextField(20); 
    year.addKeyListener(new KeyAdapter() 
    { 
public void keyTyped(KeyEvent ke){ 
     char char1 = ke.getKeyChar(); 
    if((!(Character.isDigit(char1))) &&  (char1 != '\b')) { 
     ke.consume(); 
    }   
} 
     public void keyReleased(KeyEvent e){} 
     public void keyPressed(KeyEvent e){} 
        }); 
      year.addActionListener(handler); 

      course = new JTextField(20); 

      course.addKeyListener(new KeyAdapter() 
      { 
    public void keyTyped(KeyEvent ke){ 
      char char1 = ke.getKeyChar();     if((!(Character.isLetter(char1))) && (char1 != '\b')) { 
      ke.consume(); 
      } 
     } 
     public void keyReleased(KeyEvent e){} 
     public void keyPressed(KeyEvent e){} 
        }); 
      course.addActionListener(handler); 
//=============================== Palos Buttons =========================== 


    searchB = new JButton(namesB[0]); 
    searchB.setHorizontalAlignment(JTextField.CENTER); 
    **addB = new JButton(namesB[1]); 
    addB.setHorizontalAlignment(JTextField.CENTER); 
    addB.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 
     id.selectAll(); 
     fname.selectAll(); 
     lname.selectAll(); 
     course.selectAll(); 
     year.selectAll();      
      String textID = id.getSelectedText(); 
      String textFName = fname.getSelectedText(); 
      String textLName = lname.getSelectedText(); 
      String textCourse = course.getSelectedText(); 
      String textYear = year.getSelectedText(); 

     for(int i = 0; i < 1;i++){ 
      for(int j = i;j < myList.size(); j++){ 
       myList.add(Form.generateForm(textID)); 
       if(!myList.contains(id.getSelectedText())){ 
     summary.append("["+ j + "]"+ textID +newtab + textFName + newtab 
              + textLName + newtab + textCourse + newtab + textYear + newline); 
      } 
       else{ 

       continue; 
       } 
      }     
     } 

     summary.setCaretPosition(summary.getDocument().getLength()); 

     } 
    }); 
     editB = new JButton(namesB[2]); 
     editB.setHorizontalAlignment(JTextField.CENTER); 
     deleteB = new JButton(namesB[3]); 
     deleteB.setHorizontalAlignment(JTextField.CENTER); 
     updateB = new JButton(namesB[4]); 
     updateB.setHorizontalAlignment(JTextField.CENTER); 
     updateB.addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent e){ 

    for(int i = 0; i < myList.size();i++){ 
     summary.add(myList.get(i)); 
    } 

    } 
});*** 

//=================== Palos TextArea =========================== 
     summaryPanel = new JPanel(); 
     summary.setEditable(false); 
     resultPanel = new JPanel(); 

     result = new JTextArea(4,30); 
     result.setEditable(false); 


     summaryPanel.add(new JScrollPane(summary)); 
     resultPanel.add(new JScrollPane(result)); 

//===================================== Palos Container ==================== 

some code here... 

//================================== Palos Setting Of Insets ================== 

     setSize(700,400); 
     setVisible(true); 
     show();; 

    } 
    public static Form generateForm(final String Id){ 
      Form stud = new Form(); 
      stud.setID(Id); 
      return stud;    
     } 


    private class ActionEventHandler implements ActionListener{ 
     public void actionPerformed(ActionEvent e){ 

      if(e.getSource() == addB){ 

      } 
      else if(e.getSource() == updateB){ 

      } 
     } 
    } 

    public String getID() { 
      return ID; 
     } 

     public void setID(String id) { 
      ID = id; 
     } 


} 

답변

1

사용 java.util.Set을이 순을 추적하기 위해 도움이 필요합니다. Setc에 이미 존재하는 경우 checkc를 새로 추가하기 전에 - Set에 추가하지 않고 계속 진행하십시오.

char c = ke.getKeyChar(); 
if(yourTextArea.getText().contains(String.valueOf(c))){ 
     //duplicate found, consume the event 
}else{ 
     //no duplicates 
} 
0

다음을 추가 내 ID에서 중복 문자 JtextField 내 JTextArea ... thnx에 추가됩니다
+0

수레 쉬 내가 이미 제안을 시도했지만 나는 그 경우에는 검증 과정이 그래서 내 추가하는 JButton에 조건을 가질 필요가 있다고 생각 : 당신의 JTextArea에의의 keyTyped 방법에 – PaLoS

관련 문제