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