gpt4 book ai didi

java - 将文本(从文件中读取)获取到 JFrame 中

转载 作者:行者123 更新时间:2023-12-01 04:59:20 24 4
gpt4 key购买 nike

对于编写 Java 非常陌生,因此非常感谢我能得到的任何帮助。

我正在尝试创建 JFrame,其中的文本是从单独的文本文件中读取的(有 5 个段落,每个段落一个接一个地出现)。我需要帮助使文本显示在 JFrame 上(暂时不太担心延迟效果),到目前为止,还没有成功。我用下面的代码离目标还很远吗?我知道这是一个常见问题,但其他线程一直在处理事件和其他(对我来说)困难的想法,从此类代码中获取我需要的内容对我来说仍然是一个挑战。

我读过我需要一个 JLabel 来让文本继续(尽管我在其他地方读过 JPanel?)。我相信我还需要一种在 StoryFrame 类中显示文本的方法,我可以在其中添加 JLabel (并可能声明 nextLine 命令以帮助创建延迟效果,而不是将其放入我的 ShowIntro 类中 - 我打算反复重复此过程)。 cmd 还让我意识到我从静态位置调用了非静态方法 - 尝试在我的 Java for Dummies 文本中查找,但仍然不知道如何解决此问题。我知道这段代码是不够的,我缺少什么?

import javax.swing.JFrame;
import javax.swing.JLabel;

public class StoryFrame extends JFrame {
public StoryFrame() {
setTitle("見張ってしながら...");
setSize(400,500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}

public void displayText() {
JLabel Text = new JLabel();
add(Text); // I feel I need to add a lot more here to connect the two classes

}
}


import java.util.Scanner;
import java.io.File;
import java.io.IOException;

class ShowIntro {
public static void main(String args[])
throws IOException {

new StoryFrame();
Scanner reader = new Scanner(new File("Intro.txt"));

while (reader.hasNext()) {
StoryFrame.displayText();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
}
}
}

最佳答案

class ShowIntro {
public static void main(String args[])
throws IOException {

new StoryFrame();
Scanner reader = new Scanner(new File("Intro.txt"));

while (reader.hasNext()) {
StoryFrame.displayText(); // 1 & 2
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
}
}
}

当查看您的 ShowIntro 类时,我注意到 2 件奇怪的事情:

  1. 您正在类上调用非静态方法 (displayText())。
  2. 您不会将扫描器读取的内容传递到该方法调用中。

要修复 (1),您应该将 StoryFrame 类的实例传递到变量中,并在标记行中将 StoryFrame 替换为该变量的名称。
要修复 (2),您应该向方法 displayText() 添加一个参数,因此用 public void displayText(String text) { 替换 StoryFrame 类中该方法的 header > 并在调用 ShowIntro 类中的方法时传递扫描仪读取的文本。

更正版本(未经测试)

class ShowIntro {
public static void main(String args[])
throws IOException {

StoryFrame frame = new StoryFrame(); // Store the StoryFrame in a variable
Scanner reader = new Scanner(new File("Intro.txt"));

while (reader.hasNext()) {
frame.displayText(reader.next()); // pass the text read by the scanner to the displayText() method
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
}
}
}

以及 StoryFrame 类中的 displayText() 方法:

public void displayText(String text) {       // One parameter: a String
JLabel Text = new JLabel(text); // Use the String; make it the content of the JLabel
add(Text); // Now add the JLabel to the JFrame.
}

关于java - 将文本(从文件中读取)获取到 JFrame 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13585327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com