我必须做一个将从文本文件中读取问题的测验类,我不得不试图使程序以每次按下答案按钮的方式工作,它会读取下一个问题(文本中的行)文件),我尝试了很多来自互联网的建议,但我得到的最远的是在程序运行时读取第一行,然后在按下按钮时使用String[] args = new String[0];
创建一个新框架然后文本将无法读取一点都不
这是我的代码:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Frame {
JFrame frame;
JPanel pan1;
static JButton boutonRetour,boutonEnregistrer;
static JTextField reponse,question;
static int counter1 = 1;
static int lines=0;
public static void main(String[] args) {
final JFrame frame = new JFrame("Frame");
frame.setSize(700,600);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
question=new JTextField(10);
question.setBounds(150, 220, 450, 50);
question.setEditable(true);
frame.setContentPane(new JPanel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(null, 0, 0, 700, 600, this);
}
});
boutonEnregistrer=new JButton("Answer");
boutonEnregistrer.setBounds(0,513,100,50);
boutonEnregistrer.setBackground(new Color(0, 0, 182));
boutonEnregistrer.setForeground(Color.white);
boutonEnregistrer.setFocusPainted(false);
boutonEnregistrer.setFont(new Font("Tahoma", Font.BOLD, 12));
boutonEnregistrer.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e){
counter1++;
String[] args = new String[0];
main(args);
/*
SwingUtilities.updateComponentTreeUI(frame);
frame.revalidate();
frame.repaint();
frame.removeAll();
frame.invalidate();
frame.validate();
*/
}
});
frame.add(question);
frame.add(boutonEnregistrer);
frame.setLayout(null);
System.out.println(counter1);
try {
BufferedReader br =
new BufferedReader(new FileReader("Questions.txt"));
String word = null;
while((word =br.readLine()) != null) {
lines++;
if (lines == counter1){
question.setText(word);
break;
}
}
} catch(IOException err) {
}
frame.validate();
System.out.println(lines);
};
}
答案 0 :(得分:0)
您使用lines
变量来跟踪已读取的最后一行。但是,您的代码中没有发生这种情况。 while循环始终运行,直到读者达到EOF。
读完所需的一行后,你应该从循环中断:
if (lines == counter1){
question.setText(word);
break;
}