Java-интерфейс с использованием функции разделения для отображения в текстовой области - PullRequest
0 голосов
/ 27 февраля 2019

Привет, я пытаюсь использовать функцию разделения внутри текстовой области, чтобы она отображала только определенную информацию для пользователя. В настоящее время я пытался использовать типичный метод, используемый в общем программировании, в интерфейсе GUI, однако, я считаю, что реализовал его неправильно.

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    JFileChooser chooser = new JFileChooser();
        chooser.showOpenDialog(null);
        File f = chooser.getSelectedFile();
        String filename = f.getAbsolutePath();
    String st;
    String[] setdate = null;
    String[] submission = null;
    String[] title = null;
    String[] value = null;
    try 
    {
        FileReader reader = new FileReader (filename);
        BufferedReader br = new BufferedReader(reader);
        jTextArea1.read(br, null);
        br.close();
        jTextArea1.requestFocus();

    while ((st = br.readLine()) != null) {
        System.out.println(st); 
        if(st.contains("TITLE")) 
            title = st.split(":");
        if(st.contains("DATE SET"))
            setdate = st.split(":");                
        if(st.contains("SUBMISSION"))
            submission = st.split(":");
        if(st.contains("VALUE:"))
            value = st.split(":");
    }                  
    }
    catch (Exception e ) {
        JOptionPane.showMessageDialog( null, e);
    }
} 

текущий дисплей

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019
jTextArea1.read(br, null);

Смысл использования метода read (...) JTextArea - это чтение данных из файла и добавление данных в текстовую область.

Таким образом, после вызова этого метода все данные в файле уже прочитаны.

Если вы хотите проанализировать данные ПЕРЕД добавлением данных в текстовую область, тогда вам НЕ следует использовать метод read (...).Вместо этого вы просто читаете каждую строку данных из файла, а затем используете метод append(...) JTextArea для добавления данных.

if (st.contains("TITLE"))
    title = st.split(":");

Кроме того, я не знаю, какой формат вашего файлаэто то, что вы ожидаете от этого кода.Каждый раз, когда вы читаете строку, содержащую TITLE, вы создаете новый массив.Я подозреваю, что вместо этого вы должны создать массив для получения данных, а затем использовать метод append(...) для добавления данных в текстовую область.

Но без четкого требования мы только догадываемся.

0 голосов
/ 27 февраля 2019
FileReader reader = new FileReader (filename);
BufferedReader br = new BufferedReader(reader);
jTextArea1.read(br, null);
br.close();
jTextArea1.requestFocus();

while ((st = br.readLine()) != null) {

В настоящее время вы открываете BufferedReader, читаете что-то с ним и закрываете его напрямую.Затем вы снова хотите читать, используя тот же читатель, который вы только что закрыли br.readLine().

br.close(); должно быть выполнено в finally блоке

try (FileReader reader = new FileReader(filename); BufferedReader br = new BufferedReader(reader)) {
    jTextArea1.read(br, null);
    jTextArea1.requestFocus();

    while ((st = br.readLine()) != null) {
        System.out.println(st);
        if (st.contains("TITLE"))
            title = st.split(":");
        if (st.contains("DATE SET"))
            setdate = st.split(":");
        if (st.contains("SUBMISSION"))
            submission = st.split(":");
        if (st.contains("VALUE:"))
            value = st.split(":");
    }
} catch (Exception e) {
    JOptionPane.showMessageDialog(null, e);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...