-2
我想學習java。我試圖製作一個程序來顯示txt文件中的所有文本,當它讀取一個特定的數字時停止,但它不起作用,我不知道發生了什麼問題。爲什麼這個java代碼不起作用?
這就是我現在所擁有的:
package textLezer;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class FileData implements Runnable {
public static final int WIDTH = 320;
public static final int HEIGHT = WIDTH/12 * 9;
public static final int SCALE = 3;
public final String NAME = "Text lezer";
public JFrame frame;
public static JLabel label = new JLabel();
public static JPanel panel = new JPanel();
private Thread thread;
public boolean running = false;
public void start() {
running = true;
thread = new Thread(this, NAME + "_main");
thread.start();
}
public void stop() {
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void run() {
String file_name = "text/test.txt";
try {
ReadFile file = new ReadFile(file_name);
String[] aryLines = file.OpenFile();
for (int i = 0; i < aryLines.length; i++) {
if (aryLines[i].equals("5")) {
return;
} else {
label.setText("<html>" + label.getText() + " <br> "
+ aryLines[i] + "</html>");
System.out.println(aryLines[i]);
}
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
啓動程序文件:
package textLezer;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JFrame;
public class Launcher {
private static FileData data = new FileData();
public static void main(String[] args) {
FileData.panel.setLayout(new FlowLayout());
FileData.panel.add(FileData.label);
data.frame = new JFrame();
data.frame.setTitle(data.NAME);
data.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
data.frame.setLayout(new BorderLayout());
data.frame.setSize(800, 400);
data.frame.add(FileData.panel, BorderLayout.CENTER);
data.frame.setResizable(false);
data.frame.setLocationRelativeTo(null);
data.frame.setVisible(true);
data.start();
}
}
和TXT文件:
1
2
3
4
5
6
7
8
你還沒有說什麼不好:) – rook
「它din't工作」沒有提供足夠的信息。發生了什麼?你能減少你的代碼到一個更簡短的例子嗎?例如,你真的需要用戶界面來展示問題嗎?見http://tinyurl.com/so-hints –
1)程序做了什麼,你期望什麼? 2)小細節:使用'WIDTH * 9/12'而不是'WIDTH/12 * 9'。你正在使用整數,而整數除法總是朝向零。爲了減少舍入誤差,先進行乘法,然後再進行除法。 –