Как я могу записать текст из JTextArea в файл, кроме определенных слов, хранящихся в виде строк? - PullRequest
0 голосов
/ 24 мая 2019

По сути, я построил интерфейс, который переводит вводимые пользователем данные в текстовую область.После нажатия Control + C пользователь сохраняет ввод в файл file.txt.

В интерфейсе по умолчанию есть два текста: один показывает, когда программа запускается («Пожалуйста, введите свой текст здесь!»), И тот, когда пользователь успешно сохранил текст после нажатия клавиш Control + C («Текст»).успешно добавлено! ").

Проблема в том, что с помощью клавиш Control + C пользователи могут сохранять даже те два текста по умолчанию, которые я упоминал выше.Я использую keyListener для достижения своей цели, и он работает просто отлично.Кроме того, я написал оператор «If», чтобы исключить эти два текста по умолчанию, но он не работает.

txtArea.addKeyListener(new KeyListener() {

    @Override
    public void keyTyped(KeyEvent e) {
        }
    @Override
    public void keyPressed(KeyEvent e) {
            String notThisTxt = txtArea.getText();
            String text1 = "Please enter your text in here!";
            String text2 = "Text added successfully!";

            if(!notThisTxt.contentEquals(text1) || !notThisTxt.contentEquals(text2)) {
            if ((e.getKeyCode() == KeyEvent.VK_C) && e.isControlDown()) {
                try {
                    file.createNewFile();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                    FileWriter fw = null;
                    String someSpace = " ";
                    BufferedWriter br = null;
            try {
                    fw = new FileWriter(file.getAbsoluteFile(), true);
                    br = new BufferedWriter(fw);

                    br.write(someSpace);
                    txtArea.write(br);  
                }catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }finally {
                }try {
                        br.close();
                        fw.close();
                }catch(IOException e2) {
                        System.out.println("The programm doesn't want to close!" + e2);
                    }
                }
                    txtArea.setText(txtAdded);
                }
                else{
                       System.out.println("test");
                    }      
                }

            @Override
            public void keyReleased(KeyEvent e) {
            }
        });

Я ожидал, что из этого кода получится весь текст, который пользователь может ввести, исохраните файл file.txt, за исключением двух строк, содержащих тексты по умолчанию.

1 Ответ

1 голос
/ 24 мая 2019

if (!notThisTxt.contentEquals(text1) || !notThisTxt.contentEquals(text2)) всегда будет иметь значение true, потому что невозможно, чтобы строка была равна двум разным строкам одновременно.notThisTxt гарантированно не будет равен хотя бы одному из них.

Вы, вероятно, хотели проверить, не notTisTxt ≠ text1 и notThisTxt ≠ text2.

Вы хотите написать свой код, чтобы точно сделать это выше предложение.В частности, вам нужно использовать «и» (&&) вместо «или» (||).

...