为什么';这个java代码不能工作吗?
我想做的是非常基本的:我有一个包含按钮的界面;当我按下该按钮时,我希望我的程序从文本文件中读取下一行,并将其显示在文本字段中。但是什么也没发生,我有一种感觉,这是因为它没有正确读取我的文件:\Please help,我是Java世界的一个完全的新手,我甚至很高兴我摆脱了编译器错误(耶我!),但这更糟,因为现在我不知道用谷歌搜索什么:)为什么';这个java代码不能工作吗?,java,file-io,interface,exception-handling,Java,File Io,Interface,Exception Handling,我想做的是非常基本的:我有一个包含按钮的界面;当我按下该按钮时,我希望我的程序从文本文件中读取下一行,并将其显示在文本字段中。但是什么也没发生,我有一种感觉,这是因为它没有正确读取我的文件:\Please help,我是Java世界的一个完全的新手,我甚至很高兴我摆脱了编译器错误(耶我!),但这更糟,因为现在我不知道用谷歌搜索什么:) 问题是您定义的流在try块中被关闭。所以,当你们试图读取它时,它给出的流是关闭的 1、数据无法共享,点击事件中的bf无法访问 final BufferedRead
问题是您定义的流在try块中被关闭。所以,当你们试图读取它时,它给出的流是关闭的 1、数据无法共享,点击事件中的bf无法访问
final BufferedReader bf = b;
2、 代码修改如下,以实现您的结果
public static void main(String[] args) {
final MyApp m = new MyApp();
m.button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
File f = new File("C:\\myfile.txt");
BufferedReader b = new BufferedReader(new InputStreamReader(
System.in));
try {
b = new BufferedReader(new FileReader(f));
} catch (FileNotFoundException ee) {
}
String s = new String();
try {
while ((s = b.readLine()) != null) {
m.afisaj.append(s);
}
b.close();
} catch (Exception ee) {
}
}
});
}
当你关上窗户时,你应该关上小溪。现在,在为按钮注册事件侦听器后关闭它。在你真正按下按钮之前
public static void main(String[] args) throws Exception {
final MyApp m = new MyApp();
File f = new File("myfile.txt");
BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
b = new BufferedReader(new FileReader(f));
final BufferedReader bf = b;
m.button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = new String();
try {
if ((s = bf.readLine()) != null) {
m.afisaj.append(s);
}
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
});
m.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
try {
bf.close();
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
});
}
请停止吹嘘例外情况。一旦你有了这些信息,系统就会告诉你,这个流是关闭的,其余的都很简单 步骤1:不要接受异常。至少要把它们打印出来,这是一个很好的建议,但我更喜欢(明确地)stacktrace,因为它提供了极好的细节。OP-将形式为
catch(异常e){..
的代码更改为catch(异常e){e.printStackTrace();//非常有用!
ook,我得到了前两个错误。但我不知道为什么:(一般建议:1)对于帧定位,不能通过setLocationByPlatform(true)进行
。请参见演示。2)Java GUI可能必须在多个平台上工作,使用不同的屏幕分辨率和不同的PLAF。因此,它们不利于组件的精确放置。要组织组件以获得一个健壮的GUI,请使用布局管理器,或者,使用布局填充和边框……3)不要设置顶级容器的大小。请改为布局内容并调用pack()
.4)始终复制/粘贴错误和异常输出。将其添加为。
public static void main(String[] args) throws Exception {
final MyApp m = new MyApp();
File f = new File("myfile.txt");
BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
b = new BufferedReader(new FileReader(f));
final BufferedReader bf = b;
m.button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = new String();
try {
if ((s = bf.readLine()) != null) {
m.afisaj.append(s);
}
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
});
m.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
try {
bf.close();
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
});
}