Как передать Java текстовое поле в список массива?

голоса
-3

Ребята, пожалуйста, помогите мне, как передать значения моих входов в моей JTextField (ID, имя, фамилия, курс, год) в мое ArrayList без замены существующих элементов. В то же время я буду использовать мои ArrayList хранятся значения для добавления в моем JTextArea (резюме)

////// PALOS TEXTFIELD

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


        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.setFont(new Font(TimesRoman, Font.PLAIN,14));
            fname.setHorizontalAlignment(JTextField.CENTER);
            fname.setBorder(BorderFactory.createEtchedBorder(3, Color.green, Color.white));

            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

    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();


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

                 } 
             });

/////pALOS TEXTAREA

    summary = new JTextArea(11,31);
            summary.setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 5));
            summary.setText(ID + newtab + FirstName  + newtab +  LastName + newtab + Course + newtab + Year + newline);
            summary.setEditable(false);
Задан 19/05/2009 в 13:50
источник пользователем
На других языках...                            


2 ответов

голоса
1

Я возьму удар в этом, но я должен сделать некоторые предположения здесь.

// Obviously no public fields, but I cant be bothered to make constructor
// or get/set methods
public class Form
{
    public String id;
    public String lastName;
    public String firstName;
    public String course;
    public String year;
}

Итак, вы хотите, чтобы добавить новый экземпляр формы в список форм каждый раз, когда эта кнопка нажата:

public class MyGui
{
    private List<Form> forms = new ArrayList<Form>();
    private JTextField fname;
    private JTextField id;
    private JTextField lname;
    private JTextField course;
    private JTextField year;
    // build gui ....
}

Это слушатель действия для кнопки «сохранить / добавить»

public void actionPerformed(ActionEvent e)
{
    Form form = new Form();
    form.id = id.getText();
    form.lastName = lname.getText();
    form.firstName = fname.getText();
    form.course = course.getText();
    form.year = year.getText();
    forms.add(form);
}
Ответил 19/05/2009 в 14:08
источник пользователем

голоса
0

Соответствующая часть в вашем публикуемом коде в вашем ActionListener, где вы обрабатывать кнопку мыши. Во- первых, Вы можете сохранить ArrayListмодель , запрошенных в виде списка списков строк (List <List <String >>) - или типов , определенных в форме структуры @ willcodejavaforfood в. Таким образом , вы будете иметь легкое время удержания предыдущих строк. Каждый раз , когда кнопка нажата, вы можете получить данные из текстовых полей , как вы уже закодированы и теперь просто добавить его в модель в качестве новой строки. После этого вы можете перебирать модели и заменить данные в JTextArea.

Декларация модели будет выглядеть следующим образом:

List<List<String>> model = new ArrayList<List<String>>();

и ваш обновленный действие слушатель будет выглядеть примерно так:

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();

        List<String> line = Arrays.asList(new String[]{textID,textFName,textLName,textCourse,textYear});
        model.add(line);

        StringBuilder sb = new StringBuilder();
        sb.append("ID\tFirst\tLast\tCourse\tYear\n");
        for(List<String> input : model) {
            for (String item : input) {
                sb.append(item);
                if (input.indexOf(item) == input.size()-1) {
                    sb.append("\n");
                } else {
                    sb.append("\t");
                }
            }
        }
        summary.setText(sb.toString());
    }
});

Это немного перебор, но он получает работу. Существует более, что можно сделать, чтобы обеспечить правильное выравнивание столбцов и покрасивее способ обеспечить перевод строки в конце строки, и т.д., но это, как говорится, остается в качестве упражнения для читателя.

Ответил 16/09/2009 в 04:31
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more