我设法将输入变成一个字符串,该字符串可在同一类中使用,但我想这样做,以便输入字符串可在不同的类中使用。当前类是OpenDetails,我希望字符串selectedFile在另一个名为OpenFileInfo的类中可用。我将如何设置它,以便selectedFile的结果可以存储在selectedRequirement中,或使其在其他类中可用?
我是Java的新手,所以如果有人可以帮助您,谢谢您。
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class OpenFile
{
String selectedRequirement = "";
public static void main(String a[])
{
JFrame parent = new JFrame();
String selectedFile;
selectedFile = JOptionPane.showInputDialog(parent, "Add a new module");
if(selectedFile.equalsIgnoreCase(selectedFile)){
//Makes the user input case insensitive
}
final JTextArea edit = new JTextArea(60,100);
JButton read = new JButton("Open "+ selectedFile +".txt");
read.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
FileReader reader = new FileReader(selectedFile + ".txt");
BufferedReader br = new BufferedReader(reader);
edit.read( br, null );
br.close();
edit.requestFocus();
}
catch(Exception e2) { System.out.println(e2); }
}
});
JButton write = new JButton("Save "+ selectedFile + ".txt");
write.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
FileWriter writer = new FileWriter(selectedFile + ".txt");
BufferedWriter bw = new BufferedWriter( writer );
edit.write( bw );
bw.close();
edit.setText("");
edit.requestFocus();
}
catch(Exception e2) {}
}
});
System.out.println("Module: " + selectedFile);
JFrame frame = new JFrame("Requirements");
frame.getContentPane().add( new JScrollPane(edit), BorderLayout.NORTH );
frame.getContentPane().add(read, BorderLayout.WEST);
frame.getContentPane().add(write, BorderLayout.EAST);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible(true);
}
}
答案 0 :(得分:1)
从静态上下文运行时,需要将selectedRequirement定义为静态:
private static String selectedRequirement = "";
要使selectedRequirement等于selectedFile,只需在主函数的末尾(也许是您已经打印过的地方)说selectedRequirement = selectedFile;
。
要使selectedRequirement对其他类可用,您需要在OpenFIle类(在主函数之外)中创建一个“ getter函数”,例如:
public String getSelectedRequirement(){
return selectedRequirement;
}
正如评论中指出的那样,对于您(或将来会发现此问题的任何人)来说,最好先了解一下tutorials的吸气剂,设置器和通用封装。