Scanner файла в jFrame - Java

  1. Подскажите пожалуйста, как можно считать данные из файла в массив? Делал тоже самое не в jFrame, а в "консоли", то все отлично работало. Буду очень сильно благодарен за ответ! Делал вот так:


textual

Код к задаче: «Scanner файла в jFrame - Java»

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
 
public class FrameArray extends JFrame {
    JTextField jTextField;
    JButton jButton;
    JTextArea jTextArea;
    int[][] a;
 
    public FrameArray() throws HeadlessException {
 
        jTextField = new JTextField("D:\\test.txt");
        jTextField.setPreferredSize(new Dimension(250, 20));
 
 
        jTextArea = new JTextArea();
        jTextArea.setPreferredSize(new Dimension(400, 200));
 
        jButton = new JButton("Load ");
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                File file = new File(jTextField.getText());
                if (!file.exists()) {
                    JOptionPane.showMessageDialog(null, " File not Found! ");
                    return;
                }
                if(!loadArray(file)) {
                    JOptionPane.showMessageDialog(null, " File not Found! ");
                    return;
                }
                loadText();
//                JOptionPane.showMessageDialog(null, "Load done! ");
 
            }
        });
 
        JPanel jPanel = new JPanel(new FlowLayout());
        jPanel.add(jTextField);
        jPanel.add(jButton);
        add(jPanel, BorderLayout.NORTH);
        add(jTextArea);
 
 
    }
 
    private boolean loadArray(File file) {
        Scanner in = null;
        try {
            in = new Scanner(new FileInputStream(file));
            if (!in.hasNextInt()) {
                JOptionPane.showMessageDialog(null, " wrong format! ");
            }
            int n = in.nextInt();  // rows
            if (!in.hasNextInt()) {
                JOptionPane.showMessageDialog(null, " wrong format! ");
            }
            int m = in.nextInt();  // columns
 
            a = new int[n][m];
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; j++) {
                    if (!in.hasNextInt()) {
                        JOptionPane.showMessageDialog(null, " wrong format! ");
                        return false;
                    }
                    a[i][j] = in.nextInt();
                }
            }
            in.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return true;
    }
 
    private void loadText() {
        jTextArea.setText("array a["+a.length+"]["+a[0].length+"] values:\n");
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                jTextArea.append("a[" + i + "][" + j + "]="+a[i][j]+"\n");
            }
        }
 
    }
 
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new FrameArray();
                frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                frame.setLocationRelativeTo(frame.getParent());
                frame.setSize(800, 600);
                frame.setVisible(true);
            }
        });
    }
}

СДЕЛАЙТЕ РЕПОСТ

11   голосов, оценка 4.182 из 5



Похожие ответы
  1. Здравствуйте. Исходный файл содержит следующий код:

  1. Добрый день! Помогите разобраться в каком направлении двигаться. Необходимо прочитать и вывести на экран часть содержимого текстового документа Пример текстового файла Москва: ул_Ленина: 12, 3, 8 ул_Правды: 1, 8 ул_ Космонавтов: 151, 45, 8 Питер: ул_Ленина: 1, 63, 81 ул_Правды: 111, 7 ул_ Космонавтов: 1, 4, 171 Вывести на экран построчно все содержимое я могу, НО у меня задача: Найти в текстовом документе строку после Питера и вывести на экран. Чтоб на выходе получилось ул_ Космонавтов: 1, 4, 171 Затруднение состоит в том, что наименование улиц одинаково, что в Москве и что в Питере.

  1. Добрый день! При парсинге xml файла возникает ошибка, при чем возникает по середине процесса Часть файла разбирает, а по середине возникает ошибка. Парсинг происходит методом DOM

  1. Есть jbutton, есть класс, находящийся в другом файле, но в одном package Как сделать выполнение этого класса при нажатии на jbutton?

  1. Например у меня есть вот такие данные! Могу ли нажать определенную кнопку и загрузить только по категории Транспорта? Спасибо заранее!XML1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18     <Ко>         <Список>Авто1         <Коментарии>123         <Категория>Транспорт         <Ко>         <Список>Авто2         <Коментарии>569         <Категория>Транспорт         <Ко>         <Список>Спорт         <Коментарии>789         <Категория>Развлечение    

  1. Доброго времени суток, в данном коде происходит чтение последней строчки. Как считать допустим 5 последних строчек ?

  1. По заданию необходимо написать простой текстовый редактор (создание, открытие, сохранение отредактированного). Вопрос: почему не работает сохранение файла?

  1. Добрый день! Хотелось бы поинтересоваться как можно реализовать чтение и вывод содержимого txt файла в JTextPane. я пробую так, но до конца дописать не хватает знаний. Буду рад помощи!

  1. Приветствую. Как сделать так, чтобы при сканировании файла информация добавлялась сразу а не после перезагрузки приложения? Я просто ввожу что-либо в поле ввода, сохраняю в файл, нажимаю просмотр, но в открывшемся новом окне то, что я написал в полее ввода, не отображается, оно отобразится только после перезагрузки приложения. как решить, незнаю.