【问题标题】:how to add without DUPLICATION?如何在没有重复的情况下添加?
【发布时间】:2009-05-17 12:03:59
【问题描述】:

如何在不重复的情况下在我的 JTextArea 中添加新字符……这是当我使用 JAVA 按下我的添加 JButton 时。这是我的代码,我制作了 2 个类(Form 和 FormRunner),期待可以提前帮助的人……对不起长代码-PaLoS(新手)

在 JButtons 中我最需要帮助

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


}

【问题讨论】:

    标签: java swing


    【解决方案1】:

    使用 java.util.Set 来跟踪唯一性。在添加新的任何内容之前检查它是否已存在于 Set 中 - 如果不添加到 Set 中并继续。

    【讨论】:

      【解决方案2】:

      在 JTextArea 的 keyTyped 方法中,添加以下内容:

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

      【讨论】:

      • Suresh 我已经尝试过你的建议,但我认为我需要在我的添加 JButton 中有一个条件,以便在验证过程中,以防我的 id JtextField 中没有重复字符将附加到我的 JTextArea 中。 ..thnx
      猜你喜欢
      • 2016-05-24
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 2023-04-07
      • 2019-03-01
      • 2017-03-27
      • 2015-09-14
      • 1970-01-01
      相关资源
      最近更新 更多