JFrame не работает должным образом - PullRequest
1 голос
/ 17 марта 2019

Я написал этот код, который должен читать файл, использовать токенайзер строк, чтобы просмотреть файл, создать экземпляр объекта Car и сохранить объект (String, String, int, int) в 2 разных списках, один из которыхсортируется по маркам (например, по марке автомобиля), а по другим - нет, которые отображаются в 2 столбце JFrame.

Я не знаю, что я делаю не так.Всякий раз, когда я запускаю его, рамка полностью пуста, и это сводит меня с ума.Я не могу сказать, является ли это проблемой с настройкой фрейма или самим методом readFile.

Это класс CarGUI, в котором я настраиваю фрейм и метод readFile.

import java.awt.GridLayout;
import javax.swing.JTextArea;
import javax.swing.JFrame;

@SuppressWarnings("serial")
    public class CarGUI extends JFrame{
    private JTextArea leftTextArea;
    private JTextArea rightTextArea;
    private StringBuilder leftSide;
    private StringBuilder rightSide;

     public CarGUI() //default constructor for the GUI class
   {
        // Instance variables
       this("Project 1");
   }

    public static ArrayList<Car> unsortedList = new ArrayList<Car>();
    public static ArrayList<Car> sortedList = new ArrayList<Car>();



      public CarGUI() //default constructor for the GUI class
   {
        // Instance variables
       this("Project 1");
   }




 public CarGUI(String title) //the 1-argument parameter constructor 
    {
        // Call the super class constructor to initialize the super
        // class variables before initializing this class's variables
        super(title);

        // Configure the JFrame
        // Configure the JFrame components we inherited
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(400, 400);
        this.setLocation(200, 200);
        this.setLayout(new GridLayout(1, 2)); //1 row and 2 column
        this.leftSide = new StringBuilder("Unsorted Cars\n"); 
        this.rightSide = new StringBuilder("Sorted Cars\n");
        this.leftTextArea = new JTextArea(this.leftSide.toString(), 5, 20);
        this.rightTextArea = new JTextArea(this.rightSide.toString(), 5, 20);
        this.getContentPane().add(this.leftTextArea);
        this.getContentPane().add(this.rightTextArea);
        for (int i = 0; i < sortedList.size(); i++) {
            leftSide.append(unsortedList.get(i).toString() + "\n");
            rightSide.append(sortedList.get(i).toString() + "\n");
        }
        this.leftTextArea.setText(this.leftSide.toString());
        this.rightTextArea.setText(this.rightSide.toString());
        this.setVisible(true);
    }


public void readFile(String file) throws FileNotFoundException{
    File myFile = new File("Cars.txt");
    Scanner scanner = new Scanner(myFile);
    String line = scanner.nextLine();
    String delimiter = ",";
    StringTokenizer tokenizer = new StringTokenizer(line, delimiter);
        int tokenCount = new StringTokenizer(line, ",").countTokens(); //counts the tokens, should yield 4 
    while(tokenizer.hasMoreTokens()){ 
        if(tokenCount != 4){ //if there isn't exactly 4 tokens, print the rest to the console
            System.out.println(tokenizer.toString());
        }
        else {
            //newCar(Make, Model, Year, Mileage);
            Car newCar = new Car(tokenizer.nextToken(), tokenizer.nextToken(), Integer.parseInt(tokenizer.nextToken()), Integer.parseInt(tokenizer.nextToken()));
            unsortedList.add(newCar);
            sortedList.addAll(unsortedList);
            scanner.close();
        }
    }
    selectionSort(sortedList);
}

Это метод selectionSort, в котором должно происходить волшебство:

public void selectionSort(ArrayList<Car> sortedList2) {
        for (int i = 0; i < sortedList2.size(); i++) {
            int min = i;            
            for (int j = min + 1; j < sortedList2.size(); j++)
                if (sortedList2.get(j).getMake().compareTo(sortedList2.get(min).getMake()) < 0)
                    min = j;  
            Car temp1 = sortedList2.get(i);
            Car temp2 = sortedList2.get(i);
            Car notTemp = sortedList2.get(min);
            temp1 = notTemp; // sortedList2.get(i) = sortedList2.get(min);
            notTemp = temp2; // sortedList2.get(min) = sortedList2.get(i);
            //doing this because I need to set a variable on the left-hand side
        }

    }
}

Project1

import java.io.FileNotFoundException;


public class Project1 {

    public static void main(String arg[]) throws FileNotFoundException{
         String file = "cars.txt";
            CarGUI testGUI = new CarGUI();
            testGUI.readFile(file);

    }
}

МОЖЕТ быть проблема с методом selectionSort.Я настроил его с temp, temp2 и notTemp, потому что Eclipse не будет принимать sortedList2.get(i) = sortedList2.get(min);, так как

The left-hand side of an assignment must be a variable

Мысли?Не спрашивайте, почему я использую метод сортировки выбора, это необходимо.(

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...