【问题标题】:Need Help Updating JTextArea - Java需要帮助更新 JTextArea - Java
【发布时间】:2015-11-14 21:03:27
【问题描述】:

我正在上 Java 课程的第三周。我正在做下周到期的课堂作业。使用控制台作为输出,我可以毫无问题地完成分配,这是可以接受的。不过,教授也建议我们研究 JTextArea 并考虑将其用于我们的程序输出。

我从教程中找到了一些代码,并且至少能够让一个文本块与我的第一行文本一起出现。但是当我编写实际程序时,我需要随着程序的进行继续在文本块中添加额外的行。

当我尝试在 main 方法中使用以下代码行来显示文本第 2 行时,我收到一条错误消息,提示“无法从静态上下文引用非静态变量 textarea”。

textarea.append("Product1\t3\t$3.01\t$9.03");

这是我到目前为止的代码。提前感谢您的帮助!

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ta extends JFrame{
JTextArea textarea;


public ta(){
setLayout(new FlowLayout ());
textarea = new JTextArea ("Product\tQuantity\tLine Cost\tOrder Cost\n", 5,30);
add(textarea);
}



public static void main(String[] args) {

ta gui = new ta();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(500,200);
gui.setVisible(true);

textarea.append("Product1\t3\t$3.01\t$9.03");
}
}

【问题讨论】:

    标签: java swing jtextarea


    【解决方案1】:

    您不能从static 上下文(即在main 中)引用textarea(这是一个实例字段)。

    相反,将textarea.append("Product1\t3\t$3.01\t$9.03"); 移动到您的构造函数中

    public ta(){
        setLayout(new FlowLayout ());
        textarea = new JTextArea ("Product\tQuantity\tLine Cost\tOrder Cost\n", 5,30);
        add(textarea);
        textarea.append("Product1\t3\t$3.01\t$9.03");
    }
    

    或者为您的ta 类提供一些其他“更新”方法,您可以调用它

    您可能想通读一下Code Conventions for the Java TM Programming Language,它将使人们更容易阅读您的代码并让您更轻松地阅读其他人

    【讨论】:

    • 感谢您的回复并链接到 Java 代码约定。我测试了在构造函数中移动代码行并且它有效,但没有解决我的问题。我的程序将提示用户输入产品编号和数量。然后它将使用此输入来更新 JTextArea。如果我从 main() 运行我的程序,我知道如何从输入构建字符串,但我不确定如何将 main() 中的这个字符串附加到 JTextArea?我是否应该从 ta 类编写整个程序,以使我想附加到 JTextArea 的任何字符串都可以访问?感谢您的帮助!
    • 为什么不为ta 编写一个“追加”方法,您可以使用ta 的实例来调用...
    猜你喜欢
    • 1970-01-01
    • 2011-10-06
    • 2013-12-06
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多