Java GUI jTextArea从另一个类中的toString方法填充

Java GUI jTextArea从另一个类中的toString方法填充,java,user-interface,jtextarea,Java,User Interface,Jtextarea,我正在使用重写的toString方法设置一个简单的随机生成的字符串,以显示从文本文件检索到的一些项。我可以在控制台中很好地显示它,但我仍在学习GUI,目前使用的是内置于GUI工具中的NetBeans。我有一个主类Automobile.java和一个单独的GUI.java类。我在GUI中有一个jTextArea,我想用我在单击按钮时打印到控制台的内容来填充它,但是我在开始使用它时遇到了问题。任何帮助都将不胜感激!谢谢 注意:我在这里已经看过7或8个关于类似问题的讨论,但我仍然无法理解 import

我正在使用重写的toString方法设置一个简单的随机生成的字符串,以显示从文本文件检索到的一些项。我可以在控制台中很好地显示它,但我仍在学习GUI,目前使用的是内置于GUI工具中的NetBeans。我有一个主类Automobile.java和一个单独的GUI.java类。我在GUI中有一个jTextArea,我想用我在单击按钮时打印到控制台的内容来填充它,但是我在开始使用它时遇到了问题。任何帮助都将不胜感激!谢谢

注意:我在这里已经看过7或8个关于类似问题的讨论,但我仍然无法理解

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;

class Automobile implements Comparable<Automobile> {

static java.util.Random randomGen = new java.util.Random();
static ArrayList<String> carMakes = new ArrayList<>();
static ArrayList<String> carModels = new ArrayList<>();
static SORTBY sortBy = SORTBY.MAKE;
static int nextUID = 1;
String make, model;
double engineSize = 0;
int doors = 0;
int invID = 0;

static {
    try {
        java.util.Scanner scFirst = new java.util.Scanner
            (new java.io.File("carMakes.txt"));
        java.util.Scanner scLast = new java.util.Scanner
            (new java.io.File("carModels.txt"));
        while (scFirst.hasNext()) {
            carMakes.add(scFirst.next());
        }
        while (scLast.hasNext()) {
            carModels.add(scLast.next());
        }
    } catch (java.io.FileNotFoundException e) {
        System.out.println(e);
    } // end try catch    
} // end static intializer        

enum SORTBY {
    MAKE, MODEL, DOORS, ENGINESIZE
}

public Automobile(String st) {
    this(new Scanner(st));
}

public Automobile(Scanner sc) {
    invID = nextUID++;
    make = sc.next();
    model = sc.next();
    doors = sc.nextInt();
    engineSize = sc.nextDouble();
} // end Scanner constructor        

public Automobile() {
    invID = nextUID++;
} // no parameter constructor        

public int compareTo(Automobile x) {
    switch (sortBy) {
        case MAKE:
            return make.compareTo(x.make);
        case MODEL:
            return model.compareTo(x.model);
        case DOORS:
            return doors - x.doors;
        case ENGINESIZE:
            return (engineSize > x.engineSize) ? 1 : -1;
    } // end switch      

    return 0;
} // end compareTo for Comparable interface        

public String toString() {
    return String.format
        ("%5d %15s %15s %5d %10.1fL", invID, make, model, doors, engineSize);
}// end method toString

public static Automobile[] makeRandom(int m) {
    Automobile[] auto = new Automobile[m];
    for (int i = 0; i < auto.length; i++) {
        auto[i] = new Automobile();
        auto[i].make = carMakes.get(randomGen.nextInt(carMakes.size()));
        auto[i].model = carModels.get(randomGen.nextInt(carModels.size()));
        auto[i].doors = randomGen.nextInt(6);
            if(auto[i].doors == 0 || auto[i].doors == 1)
                auto[i].doors = 2;
        auto[i].engineSize = randomGen.nextDouble() * 6.0;
            if(auto[i].engineSize <= 1.49)
                auto[i].engineSize = 1.5;
    } // end for each student to instantiate       
    return auto;
} // end method makeRandom

public static void main(String args[]) {
    System.out.println(new Automobile("X X 0 0.0"));
    Automobile[] x = makeRandom(5);
    for (Automobile m : x) {
        System.out.println(m);
    }
    Arrays.sort(x);
    System.out.println("---- Sorted By Make -----");
    for (Automobile m : x) {
        System.out.println(m);
    }
    System.out.println("---- Sorted By Model -----");
    Automobile.sortBy = SORTBY.MODEL;
    Arrays.sort(x);
    for (Automobile m : x) {
        System.out.println(m);
    }
    System.out.println("---- Sorted By Doors -----");
    Automobile.sortBy = SORTBY.DOORS;
    Arrays.sort(x);
    for (Automobile m : x) {
        System.out.println(m);
    }
    System.out.println("---- Sorted By Engine Size -----");
    Automobile.sortBy = SORTBY.ENGINESIZE;
    Arrays.sort(x);
    for (Automobile m : x) {
        System.out.println(m);
    }
} // end main

}
import java.util.Scanner;
导入java.util.ArrayList;
导入java.util.array;
类汽车工具可比{
static java.util.Random randomGen=new java.util.Random();
静态ArrayList carMakes=新ArrayList();
静态ArrayList carModels=新ArrayList();
静态SORTBY SORTBY=SORTBY.MAKE;
静态int nextUID=1;
串制、模型;
双引擎大小=0;
int doors=0;
int-invID=0;
静止的{
试一试{
java.util.Scanner scFirst=新建java.util.Scanner
(新的java.io.File(“carMakes.txt”);
java.util.Scanner scLast=new java.util.Scanner
(新的java.io.File(“carModels.txt”);
while(scFirst.hasNext()){
add(scFirst.next());
}
while(scLast.hasNext()){
add(scLast.next());
}
}catch(java.io.filenotfound异常){
系统输出打印ln(e);
}//结束尝试捕捉
}//结束静态初始化器
枚举排序{
制造、模型、门、发动机
}
公共汽车(String st){
这(新扫描仪(st));
}
公共汽车(扫描仪sc){
invID=nextUID++;
make=sc.next();
模型=sc.next();
doors=sc.nextInt();
engineSize=sc.nextDouble();
}//结束扫描构造函数
公共汽车{
invID=nextUID++;
}//没有参数构造函数
公共国际比较(汽车x){
开关(sortBy){
案例制作:
返回make.compareTo(x.make);
案例模型:
回归模型。比较(x.model);
箱门:
返回门-x门;
案例引擎化:
返回(engineSize>x.engineSize)?1:-1;
}//结束开关
返回0;
}//结束可比较接口的比较
公共字符串toString(){
返回字符串格式
(%5d%15s%15s%5d%10.1fL),因维德,品牌,型号,门,发动机尺寸;
}//结束方法toString
公共静态汽车[]随机(int m){
汽车[]汽车=新车[m];
对于(int i=0;i如果(auto[i].engineSize如果我理解正确,您可以在GUI类中创建对JTextArea的静态引用。创建按钮后,您应该为其设置操作侦听器,并像这样覆盖actionPerformed方法(取消匿名innerclass):

JButton button = new JButton("Button");
    button.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(java.awt.event.ActionEvent e) {
            //adds text to the end of the document of the textArea
            MyClass.myTextArea.append(automobile.toString());
            //or
            //overrides the document of the textArea with your new string
            MyClass.myTextArea.setText(automobile.toString());
        }
});