Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我不能在代码中多次对JTextArea使用getText()?_Java_Swing_Text_Terminal_Jtextarea - Fatal编程技术网

Java 为什么我不能在代码中多次对JTextArea使用getText()?

Java 为什么我不能在代码中多次对JTextArea使用getText()?,java,swing,text,terminal,jtextarea,Java,Swing,Text,Terminal,Jtextarea,我试图制作一个nasic文本编辑器,但每次我只能从我的JTextArea阅读一次。最后,我将读入文本,然后将其另存为文本文档,但现在我只想使用System.out.print()读取并显示当前文本。这意味着每次我点击工具栏上的open按钮时,它都会打开一个终端并显示JTextArea中的文本,但它只会执行一次。当我启动它时,我可以键入一些内容,然后单击打开按钮,文本通过终端显示。但是,如果我退出终端并键入其他内容,然后再次单击“打开”按钮,则终端不会显示任何文本!有人能帮我弄清楚吗?昨天我做了6

我试图制作一个nasic文本编辑器,但每次我只能从我的JTextArea阅读一次。最后,我将读入文本,然后将其另存为文本文档,但现在我只想使用System.out.print()读取并显示当前文本。这意味着每次我点击工具栏上的open按钮时,它都会打开一个终端并显示JTextArea中的文本,但它只会执行一次。当我启动它时,我可以键入一些内容,然后单击打开按钮,文本通过终端显示。但是,如果我退出终端并键入其他内容,然后再次单击“打开”按钮,则终端不会显示任何文本!有人能帮我弄清楚吗?昨天我做了6个小时,什么也没做!我已经在我编写的类中包含了CreateTextEdit和TextEditorFormat

import javax.swing.JEditorPane;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.event.DocumentListener;
import java.io.*;
import javax.swing.JOptionPane;

public class CreateTextEdit extends JFrame implements ActionListener
{
JButton newButton = new JButton("New");
JButton openButton = new JButton("Open");
JButton saveButton = new JButton("Save");
JButton exitButton = new JButton("Exit");
JTextArea textField = new JTextArea();
JFrame frame = new JFrame();
DocumentListener docList;





public void initializeTextEdit()
{

    frame.setSize(700, 500);

    JPanel pane = new JPanel();

    pane.setLayout(new BorderLayout());
    pane.setBorder(BorderFactory.createMatteBorder(1,10,1,10, Color.gray));

    JToolBar toolBar = new JToolBar();

    toolBar.add(newButton);
    toolBar.add(openButton);
    toolBar.add(saveButton);
    toolBar.add(exitButton);
    pane.add(toolBar, BorderLayout.PAGE_START);

    textField.setLineWrap(true);
    textField.getDocument().addDocumentListener(docList);
    JScrollPane scrollPane = new JScrollPane(textField);
    scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    pane.add(scrollPane);

    frame.add(pane);
    frame.setTitle("TextEdit+");
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    frame.setVisible(true);

    //CreatePanel panelObj = new CreatePanel();
    //frame.add(pane);
    //panelObj.add(pane);
    //panelObj.add(getPanel());
    //panelObj.setTitle("TextEdit+");
    //panelObj.setDefaultCloseOperation(EXIT_ON_CLOSE);
    //panelObj.setVisible(true);
    //panelObj.setSize(700, 500);

    //scrollPane.add(textField);
    //scrollPane.setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_ALWAYS);
    //pane.add(scrollPane, BorderLayout.CENTER);
    //pane.add(textField, BorderLayout.CENTER);

}

public void buttonFunctions()
{
    newButton.addActionListener(this);
    openButton.addActionListener(this);
    saveButton.addActionListener(this);
    exitButton.addActionListener(this);
}

public void actionPerformed(ActionEvent e)
{
    Object src = e.getSource();
    String fileName = "";
    String newText = "";
    String holder = "";
    if (src == newButton) 
    {
        String newTxt = JOptionPane.showInputDialog("Name of new text file: ");
        JFileChooser save = new JFileChooser();
        save.showSaveDialog(this);
        try
        {
            File textFile = new File("fileName.txt");
            textFile.createNewFile();
        }
        catch (IOException i)
        {
            i.printStackTrace();
        }
        frame.setTitle(newTxt);
        textField.setText(null);
    } 
    else if (src == openButton) 
    {
        holder = textField.getText();
        System.out.print(holder);
        String userhome = System.getProperty("user.home");
        JFileChooser chooser = new JFileChooser(userhome);
        chooser.showOpenDialog(null);
        File file = chooser.getSelectedFile();

        fileName = file.getName();
        System.out.print(file);

        if (fileName == null)
        {
            return;
        }
        String line = null;
        try {   
            FileReader input = new FileReader(fileName);


            BufferedReader bufRead = new BufferedReader(input);




            while((line = bufRead.readLine()) != null)
            {
                newText = newText + line; 
            }

            bufRead.close();

        }
        catch (ArrayIndexOutOfBoundsException f){

            System.out.println("Usage: java ReadFile filename\n");          

        }
        catch (IOException g){
            // If another exception is generated, print a stack trace
            System.out.println("not found");
            g.printStackTrace();
        }

        textField.setText(null);
        textField.setText(newText);
        frame.setTitle(fileName);
        newText = "";

    }

    else if (src == saveButton)
    {
        try {   
            FileWriter output = new FileWriter(fileName);

            BufferedWriter out = new BufferedWriter(output);





            out.write(textField.getText()); 
            out.close();

        }
        catch (ArrayIndexOutOfBoundsException f){

            System.out.println("Usage: java ReadFile filename\n");          

        }
        catch (IOException g){
            // If another exception is generated, print a stack trace
            System.out.println("couldnt write");
            g.printStackTrace();
        }
    }
    else if (src == exitButton)
    {
        int n = JOptionPane.showConfirmDialog(null, "Have you saved your work?","Saving",JOptionPane.YES_NO_OPTION);
        if (n == 0)
        {
            System.exit(0);
        }

    }
}

void readFile(String fileName)
{


}
}


哪个getText()给了你这个问题?我刚刚运行了你的代码,它对我来说很好。每次我键入内容并单击“打开”,编辑器中的文本就会显示在控制台中。有什么问题吗?你在点击“新建”按钮吗?我注意到
textField.setText(null)
if(src==newButton)
为真时。使用文本区域的
read(…)
write(…)
方法,而不是自己编写循环代码。@peeskillet我遇到问题的是:else if(src==openButton)下的方法
import javax.swing.JEditorPane;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JOptionPane;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class TextEditorMain extends CreateTextEdit
{
public static void main(String[] args)
{
 TextEditorMain TE = new TextEditorMain();
 TE.initializeTextEdit();
 TE.buttonFunctions();
}

}