尝试将我的按钮附加到actionListener,以使用从另一个类/方法生成的用户输入的项目数随机生成的新数组填充我的JTextArea。我可以让它部分运行,但不能完全运行。
我可以通过让按钮创建一个全新的 GUI 窗口来使其工作,但这不是我想要的,我只想将新生成的数组附加到 JTextArea。按原样,JTextArea 显示类信息和数组的十六进制代码,仅显示其他内容。
功能:用户在框中输入一个整数,该整数告诉方法要填充数组的项目数,单击按钮,清除 JTextArea 后会出现一个随机生成的数组。
我猜(希望)这是一个相当简单的问题。我已经从两个 .java 文件中放入了所有适用的(我认为)代码。
汽车.java:
//toString method override for formatting
@Override
public String toString() {
return String.format
(" %d\t\t%s\t\t%s\t\t%d\t%1.1fL", invID, make, model, doors, engineSize);
}// end method toString
//This method randomizes the array
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 method to instantiate
return auto;
} // end method makeRandom
//Main method for creating the GUI with default number of array entries
public static void main(String args[]) {
Automobile[] x = makeRandom(20);
GUI frame = new GUI(x);
frame.setVisible(true);
}
GUI.java
//Creates the GUI
public GUI(Automobile[] ia) {
this.autoArray = ia;
initComponents();
for (Automobile m : autoArray) {
mainTextArea.append(m.toString()+"\n");
}
Arrays.sort(autoArray);
mainTextArea.append("\n\n---- Sorted By Make -----\n");
for (Automobile m : autoArray) {
mainTextArea.append(m.toString() + "\n");
}
mainTextArea.append("\n\n---- Sorted By Model -----\n");
Automobile.sortBy = Automobile.SORTBY.MODEL;
Arrays.sort(autoArray);
for (Automobile m : autoArray) {
mainTextArea.append(m.toString() + "\n");
}
mainTextArea.append("\n\n---- Sorted By Doors -----\n");
Automobile.sortBy = Automobile.SORTBY.DOORS;
Arrays.sort(autoArray);
for (Automobile m : autoArray) {
mainTextArea.append(m.toString() + "\n");
}
mainTextArea.append("\n\n---- Sorted By Engine Size -----\n");
Automobile.sortBy = Automobile.SORTBY.ENGINESIZE;
Arrays.sort(autoArray);
for (Automobile m : autoArray) {
mainTextArea.append(m.toString() + "\n");
}
}//End GUI constructor
//Method for the button click action
private void randomizeButtonActionPerformed(java.awt.event.ActionEvent evt) {
int number = Integer.parseInt(numCarsTextField.getText());
mainTextArea.setText(null);
Automobile[] x = makeRandom(number);
mainTextArea.append(x.toString());
}
非常感谢一些指导。
谢谢!
添加一些我正在尝试的代码,由 @Hovercraft Full Of Eels 建议,这是新方法,但我什至不知道如何处理它,我真的很感激这里的一些更深入的帮助:
public void appendAutos(Automobile[] cars){
this.autoArray = cars;
initComponents();
for (Automobile m : autoArray) {
mainTextArea.append(m.toString()+"\n");
}
Arrays.sort(autoArray);
mainTextArea.append("\n\n---- Sorted By Make -----\n");
for (Automobile m : autoArray) {
mainTextArea.append(m.toString() + "\n");
}
mainTextArea.append("\n\n---- Sorted By Model -----\n");
Automobile.sortBy = Automobile.SORTBY.MODEL;
Arrays.sort(autoArray);
for (Automobile m : autoArray) {
mainTextArea.append(m.toString() + "\n");
}
mainTextArea.append("\n\n---- Sorted By Doors -----\n");
Automobile.sortBy = Automobile.SORTBY.DOORS;
Arrays.sort(autoArray);
for (Automobile m : autoArray) {
mainTextArea.append(m.toString() + "\n");
}
mainTextArea.append("\n\n---- Sorted By Engine Size -----\n");
Automobile.sortBy = Automobile.SORTBY.ENGINESIZE;
Arrays.sort(autoArray);
for (Automobile m : autoArray) {
mainTextArea.append(m.toString() + "\n");
}
}
private void randomizeButtonActionPerformed(java.awt.event.ActionEvent evt) {
int number = Integer.parseInt(numCarsTextField.getText());
mainTextArea.setText(null);
appendAutos(Automobile[]);
我不确定返回类型应该是什么,或者如何将用户输入的数字传递到方法中,因为建议该方法接受数组类型。
最佳答案
简单:为 GUI 提供一个 setAutos(Automobile[] cars)
或 appendAutos(...)
方法,并调用您当前在该方法中的构造函数。然后从您的 actionPerformed 方法中调用该方法。
关于Java:显示从另一个类中的方法创建的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35518021/