为Data Structures类项目指明正确的方向?

时间:2011-11-07 22:50:26

标签: java

编写此类的事件处理时遇到问题。不明白如何在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){
    }


}

1 个答案:

答案 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.Scannerjava.io.FileReader。因此,您可以使用new FileReader(filename)将其传递给扫描仪。使用while .hasNextLine()循环。