用java中的Swing进行文件处理编程

用java中的Swing进行文件处理编程,java,swing,file-handling,Java,Swing,File Handling,我需要第2步的帮助,以了解java、、、中文件处理的工作原理 这就是我正在做的……:- 问题:例外 注意:我是一个有这个概念的新手,请告诉我我的代码中有什么错误 -使用swing创建一个小型Java应用程序,该应用程序必须请求用户名和密码,并且有一个Create按钮 -按下“创建”按钮后,必须使用用户名创建一个新目录,并且密码必须保存为该目录内的password.txt文件 -如果目录已经存在,则会出现一个弹出窗口,显示“用户已经存在” 我已经试了好几个小时了,但还是做不好,非常感谢你的帮助 我

我需要第2步的帮助,以了解java、、、中文件处理的工作原理

这就是我正在做的……:- 问题:例外 注意:我是一个有这个概念的新手,请告诉我我的代码中有什么错误

-使用swing创建一个小型Java应用程序,该应用程序必须请求用户名和密码,并且有一个Create按钮

-按下“创建”按钮后,必须使用用户名创建一个新目录,并且密码必须保存为该目录内的password.txt文件

-如果目录已经存在,则会出现一个弹出窗口,显示“用户已经存在”

我已经试了好几个小时了,但还是做不好,非常感谢你的帮助

我需要看到一些代码,而我一直在努力修复我的

更新代码:
这里有很多潜在的问题,让我们看一下代码:

class CreateUser implements ActionListener {
小问题:避免让GUI类实现控制接口。这给了类太多的责任,使类变得混乱,导致难以调试代码。最好使用匿名内部类或非匿名内部类

JFrame fr; // Frame
JButton b1; // Create Button
JLabel lb1, lb2; // Username and password
JTextField tf1, tf2; // Username and password input fields
JPanel p1;
小问题:除非您有特定的理由公开,否则字段应该始终是私有的。你不知道,所以这里要保密

CreateUser() {
    // Setting the frame
    fr = new JFrame();
    fr.setLayout(null);
    fr.setSize(400, 400);
小问题:从不,从不,从不使用
null
布局。虽然空布局和
setBounds()
可能会像创建复杂GUI的最简单和最好的方式一样吸引新手,但您创建的GUI越多,在使用它们时遇到的困难就越严重。当GUI调整大小时,它们不会调整您的组件的大小,它们是一个需要增强或维护的皇家女巫,当它们放置在滚动窗格中时会完全失败,当在所有平台或屏幕分辨率与原始分辨率不同的情况下查看时,它们看起来非常糟糕

    // setting panel
    p1 = new JPanel();
    p1.setBounds(0, 0, 400, 400);
    p1.setLayout(null);
同样的问题。学习布局管理器,然后使用布局管理器

    // setting Username Text Field
    JTextField tf1 = new JTextField();
主要问题:您正在跟踪一个字段。通过在类构造函数中重新声明tf1变量,您将JTextField对象分配给一个局部变量,这意味着类中的tf1字段保持为空/未分配/null。如果尝试使用此空字段,则可能会调用NullPointerException

因此,如果要在构造函数或init方法中创建和赋值对象,那么

    JTextField tf1 = new JTextField();
做:

同样的问题。此外,这应该是一个JPasswordField,而不是JTextField

    // setting Button
    b1 = new JButton("Create");
由于某些原因,您正确分配了按钮。算了吧

public static void main(String s[]) {
    new CreateUser();
}
始终在Swing事件线程或EDT(用于事件分派线程)上启动Swing应用程序。我们也要这样做:

public static void main(String s[]) {
    SwingUtilities.invokeLater(() -> new CreateUser());        
}


主要问题:永远不要有一个空的挡块,这相当于试图驾驶一辆蒙住眼睛的汽车。至少打印出stacktrace,以便在错误发生时通知您。此外,如果您正在写文本,请使用诸如PrintWriter之类的书写器。我不会讨论写密码文本的危险,但很明显,这是你在现实生活中永远不会做的事情。

这里有很多潜在问题,让我们来看看代码:

class CreateUser implements ActionListener {
小问题:避免让GUI类实现控制接口。这给了类太多的责任,使类变得混乱,导致难以调试代码。最好使用匿名内部类或非匿名内部类

JFrame fr; // Frame
JButton b1; // Create Button
JLabel lb1, lb2; // Username and password
JTextField tf1, tf2; // Username and password input fields
JPanel p1;
小问题:除非您有特定的理由公开,否则字段应该始终是私有的。你不知道,所以这里要保密

CreateUser() {
    // Setting the frame
    fr = new JFrame();
    fr.setLayout(null);
    fr.setSize(400, 400);
小问题:从不,从不,从不使用
null
布局。虽然空布局和
setBounds()
可能会像创建复杂GUI的最简单和最好的方式一样吸引新手,但您创建的GUI越多,在使用它们时遇到的困难就越严重。当GUI调整大小时,它们不会调整您的组件的大小,它们是一个需要增强或维护的皇家女巫,当它们放置在滚动窗格中时会完全失败,当在所有平台或屏幕分辨率与原始分辨率不同的情况下查看时,它们看起来非常糟糕

    // setting panel
    p1 = new JPanel();
    p1.setBounds(0, 0, 400, 400);
    p1.setLayout(null);
同样的问题。学习布局管理器,然后使用布局管理器

    // setting Username Text Field
    JTextField tf1 = new JTextField();
主要问题:您正在跟踪一个字段。通过在类构造函数中重新声明tf1变量,您将JTextField对象分配给一个局部变量,这意味着类中的tf1字段保持为空/未分配/null。如果尝试使用此空字段,则可能会调用NullPointerException

因此,如果要在构造函数或init方法中创建和赋值对象,那么

    JTextField tf1 = new JTextField();
做:

同样的问题。此外,这应该是一个JPasswordField,而不是JTextField

    // setting Button
    b1 = new JButton("Create");
由于某些原因,您正确分配了按钮。算了吧

public static void main(String s[]) {
    new CreateUser();
}
始终在Swing事件线程或EDT(用于事件分派线程)上启动Swing应用程序。我们也要这样做:

public static void main(String s[]) {
    SwingUtilities.invokeLater(() -> new CreateUser());        
}


主要问题:永远不要有一个空的挡块,这相当于试图驾驶一辆蒙住眼睛的汽车。至少打印出stacktrace,以便在错误发生时通知您。此外,如果您正在写文本,请使用诸如PrintWriter之类的书写器。我不会讨论写密码文本的危险,但很明显,这是你在现实生活中永远不会做的事情。

欢迎来到StackOverflow。“我需要看一些代码”--抱歉,StackOverflow不能以这种方式工作。请访问并阅读。你应该发布你的代码,并解释你遇到了什么错误,什么不起作用。对不起,你必须发布你的相关代码,而不是借口。否则我们怎么理解你的问题?最好创建并发布一个有效的。请读这本珍贵的书