2016-10-04 3 views
0

Прежде всего мне нужно добавить цифры, указанные пользователем, в список по имени numberlist. И затем, наконец, добавьте его в список списков с именем listCollection. После этого мне нужно отобразить вывод из спискаCollection Например, скажем, сначала пользователи добавят числа 2,3,4 в список, а затем нажимают . Добавьте список Collection, а затем снова вводит номера 5,6,7,8 и клики Добавить в список Коллекция. Ouput я хочу сделать дисплей являетсяДобавить списки в другой список

Collection1 : 2,3,4 
Collection2 : 3,4,5 

позволяет просто сказать, что я хочу 2,3,4 в индексе 0 listCollection и 5,6,7 в индексе 1 listCollection.
Вот мой код:

import java.awt.FlowLayout; 

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.ArrayList; 
import java.util.List; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import static javax.swing.JFrame.EXIT_ON_CLOSE; 

import javax.swing.JTextField; 

/** 
* 
* @author sudip 
*/ 
public class JavaApplication1 extends JFrame implements ActionListener { 
    private JTextField txtNotation; 
    private JButton btAddlist, btAddNumber, btOutput; 
    private List<List<Integer>> listCollection; 
    private History history; 

    public JavaApplication1() { 
     initComponents(); 
     listCollection = new ArrayList<List<Integer>>(); 
    } 

    public void initComponents() { 
     setSize(400, 500); 
     setLayout(new FlowLayout(3, 3, 3)); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     txtNotation = new JTextField("2"); 
     txtNotation.setColumns(20); 
     txtNotation.setSize(20, 40); 
     btAddNumber = new JButton("Add Number"); 
     btAddlist = new JButton("Add List to Collection"); 
     btOutput = new JButton("Get"); 
     getContentPane().add(txtNotation); 
     getContentPane().add(btAddNumber); 
     getContentPane().add(btAddlist); 
     getContentPane().add(btOutput); 
     btAddlist.addActionListener(this); 
     btAddNumber.addActionListener(this); 
     btOutput.addActionListener(this); 
    } 

    public static void main(String[] args) { 
     new JavaApplication1().setVisible(true); 

    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     JButton source = (JButton) e.getSource(); 
     List<Integer> numberlist = new ArrayList<>(); 
     int a = Integer.parseInt(txtNotation.getText()); 

     if (source.equals(btAddNumber)) { 
      System.out.println("Number was added to list"); 
      numberlist.add(a); 
     } else if (source.equals(btOutput)) { 
      displayOutput(); 
     } else if (source.equals(btAddlist)) { 
      System.out.println("Number of list was added to ListCollection"); 
      numberlist.clear(); 
      listCollection.add(numberlist); 
     } 

    } 

    public void displayOutput() { 
     for (int i = 0; i < listCollection.size(); i++) { 
      System.out.println("Collection: " + i+1); 
      for (int j = 0; j < listCollection.get(i).size(); j++) { 
       System.out.print(listCollection.get(i).get(j) + ", "); 
      } 
     } 
    } 

} 
+8

Отдельная логика у вас возникли проблемы с графическим пользовательским интерфейсом кода –

+1

5.6.7 не должен быть в индексе 2 listCollection? в то время как вы упоминали как в индексе 1. –

+1

@prashantthakre жаль, что я имел в виду 2,3,4 в индексе 0 и 5,6,7 в индексе 1 –

ответ

0
@Override 
    public void actionPerformed(ActionEvent e) { 
     JButton source = (JButton) e.getSource(); 
     //List<Integer> numberlist = new ArrayList<Integer>(); //you clear your list here 
     int a = Integer.parseInt(txtNotation.getText()); 

     if (source.equals(btAddNumber)) { 
      System.out.println("Number was added to list"); 
      numberlist.add(a); 
     } else if (source.equals(btOutput)) { 
      displayOutput(); 
     } else if (source.equals(btAddlist)) { 
      System.out.println("Number of list was added to ListCollection"); 
      //numberlist.clear(); //you then added empty list to your collection (cause add doesn't copy it, it adds a reference to it) 
      listCollection.add(numberlist); 
      numberlist = new ArrayList<Integer>(); //creates new list instead of clearing old one 
     } 

    } 

Результат:

Number was added to list 
Number was added to list 
Number was added to list 
Number of list was added to ListCollection 
Number was added to list 
Number was added to list 
Number was added to list 
Number was added to list 
Number of list was added to ListCollection 
Collection: 01 
2, 3, 4, 
Collection: 11 
5, 6, 7, 8, 
+1

Спасибо, мужчина:) Большое спасибо :! –

0

Это немного неясно, что вы просите, но я вижу две возможности:

  1. Создать список, который будет иметь collection1 по индексу 0 и collection2 по индексу 1 ,
  2. Крит список, который будет содержать все элементы collection1 и collection2.

Первый подход:

List<List<Integer>> listCollection = new ArrayList<>(); 
listCollection.add(collection1); 
listCollection.add(collection2); 

или

List<List<Integer>> listCollection = new ArrayList<>(); 
listCollection.add(null); 
listCollection.add(collection1); 
listCollection.add(collection2); 

в случае, если вы хотите начать с индексом 1 очень studid - просто говорю.

Второй подход:

List<Integer> listCollection = new ArrayList<>(); 
listCollection.addAll(collection1); 
listCollection.addAll(collection2); 
+0

Я хочу начать с индекса 0 по умолчанию.Ошибка в моем вопросе –

+0

вместо collectcion1 и collection2 я хочу использовать одну коллекцию. Во-первых, добавьте коллекцию с числами в listCollection, затем очистите коллекцию и добавьте новые данные в коллекцию, а затем снова добавьте эту коллекцию в listCollections. –

1

Ваша проблема заключается в вашей actionPerformed логике, где вы создавать новый экземпляр нового numberList каждый раз. Когда источником события является btAddList, ваш список всегда будет пустым, поскольку он только что был воссоздан. Цифры, добавленные кнопкой btAddNumber, никогда не будут сохраняться, после чего потерянный измененный numberList был потерян после того, как был удален метод actionPerfomed.

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

+0

Я попытался инициализировать список конструктора, все еще не работая! –

Смежные вопросы