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



下面的代码是这样工作的:

  • 用户单击运行按钮
  • 程序从指定位置读取文件
  • 程序从<script> </script>中删除内容,包括标签本身
  • 程序将编辑后的文本返回到名为textAreaJTextArea

我试着把它作为一个全局变量,因为它在两个不同的类中。向下运行是一旦用户点击";"运行按钮";,在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();
}
}
}

3个选项:

  • 使侦听器类成为GUI的内部类,然后它将可以访问其外部类的所有字段(在这种情况下不需要静态(
  • 将这两个类完全分开,并将对文本字段的引用传递给侦听器(例如,通过构造函数参数(
  • 通过GUI.textArea访问静态字段

最新更新