如何访问相同的文本区域变量?

xtfmy6hx  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(290)

以下代码的工作原理如下:
用户单击run按钮
程序从指定位置读取文件
程序从中删除内容 <script> </script> ,包括标签本身
程序将编辑的文本返回到 JTextArea 打电话 textArea 我试着把它变成一个全局变量,因为它在两个不同的类中。一旦用户单击“run按钮”,gui类中初始化的文本区域就会更新。

public class GUI{
        static JTextArea textArea;
    public GUI() {
        JFrame frame = new JFrame();
        textArea = new JTextArea(5,30);
        JButton runButton = new JButton("Remove JS");
        JButton importButton = new JButton("Import File");
        JPanel panel = new JPanel();

        runButton.addActionListener(new runApp());
        runButton.setBounds(100, 100, 100, 80);
        importButton.addActionListener(new importFile());
        importButton.setBounds(100, 100, 80, 60);

        panel.setBorder(BorderFactory.createEmptyBorder(300, 300 , 150, 150));
        panel.setLayout(new GridLayout(0, 1));
        panel.add(textArea);
        panel.add(runButton);
        panel.add(importButton);

        frame.add(panel, BorderLayout.CENTER);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("JavaScript Extractor");
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new GUI();

    }
}

class runApp implements ActionListener{
    public void actionPerformed(ActionEvent arg0) {

        RemoveScript run = new RemoveScript();

        try {
            File fileObject = new File("C:\\Users\\coker\\Documents\\readJS.txt");
            Scanner reader = new Scanner(fileObject);
            while(reader.hasNextLine()) {
                String output = reader.nextLine();
                textArea.setText(run.removeScript(output));
            }
            reader.close();
        }catch(FileNotFoundException e) {
            System.out.println("An error has occured.");
            e.printStackTrace();
        }
    }
}
t9aqgxwy

t9aqgxwy1#

3个选项:
使您的listener类成为 GUI ,则它将有权访问其外部类的所有字段(在这种情况下不需要使用static)
将这两个类完全分开,并将对文本字段的引用传递给侦听器(例如,通过构造函数参数)。
通过访问静态字段 GUI.textArea

相关问题