如何将JTextArea中的文本写到文件中,除了某些作为字符串存储的单词以外?

时间:2019-05-24 11:32:12

标签: java swing jtextarea

基本上,我构建了一个将用户输入内容带到文本区域的界面。在按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,但2个包含默认文本的字符串除外。

1 个答案:

答案 0 :(得分:1)

if (!notThisTxt.contentEquals(text1) || !notThisTxt.contentEquals(text2))将始终为true,因为一个字符串不可能同时等于两个不同的字符串。 notThisTxt保证不等于其中至少之一。

您可能打算检查notThisTxt≠text1 notThisTxt≠text2。

您想编写代码以准确地完成上述句子。具体来说,您需要使用“和”(&&)而不是“或”(||)。