如何访问相同的文本区域变量?
How can I access the same text area variable?
下面的代码是这样工作的:
- 用户点击 运行 按钮
- 程序从指定位置读取文件
- 程序从
<script> </script>
中删除内容,包括标签本身
- 将 returns 编辑的文本编入名为
textArea
的 JTextArea
我尝试将其设为全局变量,因为它位于两个不同的 classes 中。 运行 的缺点是,一旦用户单击“运行 按钮”,在 GUI class 中初始化的文本区域将更新。
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 个选项:
- 使您的侦听器 class 成为
GUI
的内部 class,然后它将可以访问其外部 class 的所有字段(不需要 static例)
- 保持 2 class 完全独立,并将对文本字段的引用传递给侦听器(例如,通过构造函数参数)。
- 通过
GUI.textArea
访问静态字段
下面的代码是这样工作的:
- 用户点击 运行 按钮
- 程序从指定位置读取文件
- 程序从
<script> </script>
中删除内容,包括标签本身 - 将 returns 编辑的文本编入名为
textArea
的
JTextArea
我尝试将其设为全局变量,因为它位于两个不同的 classes 中。 运行 的缺点是,一旦用户单击“运行 按钮”,在 GUI class 中初始化的文本区域将更新。
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 个选项:
- 使您的侦听器 class 成为
GUI
的内部 class,然后它将可以访问其外部 class 的所有字段(不需要 static例) - 保持 2 class 完全独立,并将对文本字段的引用传递给侦听器(例如,通过构造函数参数)。
- 通过
GUI.textArea
访问静态字段