编写此类的事件处理时遇到问题。不明白如何在GUI类中实现它。这不是分级任务或必须交付。这只是一些独立的练习,以帮助Java编码。以下是对问题的一些描述:
创建一个Java GUI程序,它有一个按钮,一个文本框和一个文本字段。当用户单击按钮时,系统应弹出文件选择窗口,允许用户从硬盘中选择文件。选择文件后,例如“ssn.txt”,您的程序应该读取输入文件“ssn.txt”。在文件内,每一行代表一个社会安全号码。 程序首先将所有ssns读入内存。如果文件中ssn的格式错误,程序应该抛出一个SSNException对象,并捕获该Exception对象,并在文本框中显示该行的错误消息。
以下是我的一些代码:
public class SSN_GUI extends JPanel implements ActionListener{
public SSN_GUI(){
makeObject();
doTheLayout();
theButton.addActionListener(this);
}
private JTextField inputSSN;
private JButton theButton;
//Make all the Objects
private void makeObject(){
inputSSN = new JTextField(15);
inputSSN.setEditable(true);
theButton = new JButton();
}
//Layout all the Objects
private void doTheLayout(){
JPanel thePanel = new JPanel();
thePanel.setLayout(new BorderLayout());
thePanel.add(new JLabel("Enter Social Security Number: "));
thePanel.add(inputSSN, "Center");
thePanel.add(theButton, "North");
}
// Handle the button push
public void actionPerformed(ActionEvent evt){
}
}
答案 0 :(得分:0)
任何时候你有一个GUI和你用数据做某事你应该采取MVC方法。因此,您可以将GUI事件处理和数据处理分成两个不同的类。
我会有一个扩展JFrame的类,它将负责显示视图。您的视图(尽管不是最佳实践)将创建一个新的模型类,它将具有您的文件读取和验证方法。
注意:您的问题陈述没有说明文本字段的用途。
你应该有一个扩展Throwable的SSNException。您可以添加其他字段,但我只需添加一个字段以包含格式错误的SSN作为字符串。您还可以添加零参数构造函数来设置默认错误消息。
您可以创建一个模型类,负责迭代文件中的每一行并运行抛出SSNException的验证方法。验证SSN的简单方法是使用正则表达式。否则,您可以使用更原始的方法,例如逐个字符地验证字符串。 SSN只能以###-##-####
的形式具有9位数字(因此长度为9个字符)。因此,有效的SSN在0-2,4-5,7-10的位置只能有0到9的数字,而位置3和6的字符是' - '。
如果您决定使用正则表达式,请在方法签名中[String Reference].matches("\\d{3}-\\d{2}-\\d{4}")
的验证方法中使用throws SSNException
。当match方法返回false时,您可以在调用堆栈中抛出新的SSNException。
在存储SSN的读取方面,您可以使用ArrayList或创建自己的ArrayList类。如果输入文件在文件顶部包含一个整数,那么原始String[]
数组就可以了。假设数据文件具有简单的数据结构,其中每一行代表一个SSN,准备好用于文件读取的Java库包括java.util.Scanner
和java.io.FileReader
。因此,您可以使用new FileReader(filename)
将其传递给扫描仪。使用while .hasNextLine()
循环。