Как вывести введённую информацию с помощью таблицы?

Рейтинг: 0Ответов: 1Опубликовано: 23.01.2023
import javax.swing.*;

import java.awt.*;
import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class Main {
    public static void info_Cars() {

        Scanner in = new Scanner(System.in);

        System.out.println("Введіть кількість авто яку ви хочете додати до таблиці:");
        int count = in.nextInt();

        List<Car> Arr_Car=new ArrayList<>();
        String [][] Cars=new String[count][count];
        String [] colum={"Марка авто","Модель авто","Рік виготовлення авто","Ціна авто","Місткість авто"};
        for (int i = 0; i < count; i++) {
            System.out.print("Авто під номером №"+(i+1)+"\n");

            System.out.print("Марка авто:");
            String make = in.next();

            System.out.print("Модель авто авто:");
            String model = in.next();

            System.out.print("Рік виготовлення авто:");
            String yM = in.next();

            System.out.print("Ціна авто:");
            String cost = in.next();

            System.out.print("Місткість авто:");
            String nof = in.next();

            Car c = new Car(make, model, yM, cost, nof);
            Arr_Car.add(c);
        }
        for (int i=0;i< count;i++) {
            for (int j = 0; j < count; j++) {
                Cars[i][j] = String.valueOf(Arr_Car.get(i));
            }
        }
        JFrame frame=new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTable table=new JTable(Cars,colum);
        table.setVisible(true);
        JScrollPane scrollPane = new JScrollPane(table);
        frame.getContentPane().add(scrollPane);
        frame.setPreferredSize(new Dimension(450, 200));
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        info_Cars();
    }
}

Ответы

▲ 0

У вас в данном конкретном случае при попытке строить таблицу в аргументы конструктора JTable передаются некорректные параметры. Кроме того, ваш класс Car, который вы не показали, но он есть, прикручен ржавым болтом и только мешает. попробуйте так:

import javax.swing.*;
import java.awt.*;
import java.util.Scanner;

public class Main {
    
    public final static String CAR_TITLES [] = new String[]{"Марка", "Модель", "Рік виготовлення", "Ціна", "Місткість"};

    public static String[][] infoCars() {
        Scanner in = new Scanner(System.in);
        System.out.println("Введіть кількість авто яку ви хочете додати до таблиці:");
        int count = Integer.valueOf(in.nextLine());        
        String[][] data = new String[count][CAR_TITLES.length];        
        for (int i = 0; i < data.length; i++) {
            System.out.println("Авто під номером №" + (i + 1) + "\n");
            for (int j = 0; j < data[i].length; j++) {
                System.out.println(Car.TITLES[j]);
                data[i][j] = in.nextLine();
            }
        }
        return data;
    }
    
    public static void toUI(String[][] data, String[] titles) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTable table = new JTable(data, titles);
        table.setVisible(true);
        JScrollPane scrollPane = new JScrollPane(table);
        frame.getContentPane().add(scrollPane);
        frame.setPreferredSize(new Dimension(450, 200));
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        String[][] infoCars = infoCars();
        toUI(infoCars, CAR_TITLES);
    }
}