标题:java初学者,大家帮我看个小程序
只看楼主
cpxuvs
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:45
专家分:142
注 册:2015-12-22
结帖率:85.71%
已结贴  问题点数:20 回复次数:6 
java初学者,大家帮我看个小程序
程序是为了将文本框中的内容写到一个txt文件中,我运行过了,
txt可以创建,但是不能写入东西

大家如果认为我的程序有编的不好的地方,都可以说说,一定虚心接受


package test;
import java.awt.*;
import java.awt.event.*;
import *;




public class Test
{
TextField loginField = new TextField(10);
TextField passworldField=new TextField(10);
TextField homeField=new TextField(10);
Button sure = new Button("确定");
Button clear = new Button("清除");//这些东西放在denglu()方法里面,有错,所以我拿出来了
public static String loginT,passwordT,homeT;
public void denglu()
{
Frame f = new Frame();
f.setBounds(150, 150, 200, 200);
f.setVisible(true );
f.setLayout(new GridLayout(4,2,4,4));

Label log_in = new Label(" 用户名");
Label password_ =new Label(" 密码 ");
Label home_ = new Label(" 地址 ");



sure.addActionListener(new sureListener());

clear.addActionListener(new clearListener());


f.add(log_in);
f.add(loginField);
f.add(password_);
f.add(passworldField);
f.add(home_);
f.add(homeField);
f.add(sure);
f.add(clear);

f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent arg0)
{
System.exit(0);
}
});

}
class sureListener implements ActionListener
{
public void actionPerformed(ActionEvent e1)
{
if(e1.getSource()==sure)
{

loginT=loginField.getText();
passwordT=loginField.getText();
homeT=loginField.getText();

}
}
}
class clearListener implements ActionListener
{
public void actionPerformed(ActionEvent e2)
{

}

}
public static void main(String[] args)
{
Test a =new Test();
a.denglu();
File file1 =new File("D:\\denglu.txt");
try {
file1.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
try {
FileWriter fw = new FileWriter("D:\\denglu.txt");
fw.write(loginT);
fw.write(passwordT);
fw.write(homeT);
fw.flush();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}


}
搜索更多相关主题的帖子: package public import 文本框 
2015-12-22 00:50
GrayJerry
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:75
专家分:310
注 册:2015-10-20
得分:20 
,这里没改,而且你想实现的应该是,点击确定后,文本框的内容写入denglu.txt文件中,所以File file1 =new File("D:\\denglu.txt");及以后的代码应放在surelistener类里
所有的代码如下:
package test;

import java.awt.*;
import java.awt.event.*;
import *;

public class Test {
    TextField loginField = new TextField(10);
    TextField passworldField = new TextField(10);
    TextField homeField = new TextField(10);
    Button sure = new Button("确定");
    Button clear = new Button("清除");// 这些东西放在denglu()方法里面,有错,所以我拿出来了
    public static String loginT, passwordT, homeT;

    public void denglu() {
        Frame f = new Frame();
        f.setBounds(150, 150, 200, 200);
        f.setVisible(true);
        f.setLayout(new GridLayout(4, 2, 4, 4));

        Label log_in = new Label(" 用户名");
        Label password_ = new Label(" 密码 ");
        Label home_ = new Label(" 地址 ");

        sure.addActionListener(new sureListener());

        clear.addActionListener(new clearListener());

        f.add(log_in);
        f.add(loginField);
        f.add(password_);
        f.add(passworldField);
        f.add(home_);
        f.add(homeField);
        f.add(sure);
        f.add(clear);

        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent arg0) {
                System.exit(0);
            }
        });

    }

    class sureListener implements ActionListener {
        public void actionPerformed(ActionEvent e1) {
            if (e1.getSource() == sure) {

                loginT = loginField.getText();
                passwordT = passworldField.getText();
                homeT = homeField.getText();
               
                File file1 = new File("D:\\denglu.txt");
                try {
                    file1.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    FileWriter fw = new FileWriter("D:\\denglu.txt");
                    fw.write(loginT);
                    fw.write(passwordT);
                    fw.write(homeT);
                    fw.flush();
                    fw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    class clearListener implements ActionListener {
        public void actionPerformed(ActionEvent e2) {

        }

    }

    public static void main(String[] args) {
        Test a = new Test();
        a.denglu();
    }

}
2015-12-22 09:43
cpxuvs
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:45
专家分:142
注 册:2015-12-22
得分:0 
感谢,是这样的,不加到sureListener里,写入的就是初始文本框的内容,而里面什么都没有,所以写不到文件中。
不过我还有个小问题,从内部类访问外部类方法中的一个对象,该怎么办?我知道内部类访问外部类方法的局部变量
要加final,那如果变量是个对象呢,就像 TextField loginField = new TextField(10);一样,写在denglu()方法里就不行
2015-12-22 10:50
GrayJerry
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:75
专家分:310
注 册:2015-10-20
得分:0 
直接把这个对象定义为外部包装类的成员变量,就可以访问了
2015-12-22 11:31
cpxuvs
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:45
专家分:142
注 册:2015-12-22
得分:0 
分给你了,不过后面我问的,能给我说说原因吗,是不是写在方法内,就是局部变量,有作用范围的问题?
2015-12-22 12:34
GrayJerry
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:75
专家分:310
注 册:2015-10-20
得分:0 
对的,是作用范围的问题,很明显,内部类是在外部包装类的里面,而外部包装类的成员变量,作用域是整个类内,当然也包括内部类了,所以在内部类中也可以访问外部包装类的成员变量
2015-12-24 09:47
jinjoxie
Rank: 2
等 级:论坛游民
威 望:1
帖 子:19
专家分:61
注 册:2015-6-3
得分:0 
这个应该不是作用范围问题,楼主的程序的逻辑本身问题。Frame是生成一个线程运行的,程序启动后,生成界面后就跳到写文件了,那时后还没点登录的按钮,就是说那时后所有值都还没有初始化。验证我的说法,你可以尝试在写文件中加入Thread.sleep(10000l), 并在这10秒内完成填表则点“登录”,那文件中就会有内容。
        try {
            Thread.sleep(10000l);
            FileWriter fw = new FileWriter("D:\\denglu.txt");
2016-01-12 09:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-460446-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023335 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved