目前正在开发一个Java Swing应用程序,用于存储大学生评估的名称、类型和权重。他们可以使用图形用户界面按钮添加多个评估(存储在ArrayList中),并使用图形用户界面上的显示按钮显示输入。我一直在寻找我的问题的答案,我是Java的初学者,正在使用带有GUI的实例化类,并且不理解使用扫描器的相关问题,如果我错了,请道歉。
我的代码没有错误,但是当我按下display按钮时,Name、Type和Weighting字段都是空白的。
这是我的GUI的图片:

这是我的评估类,我在其中声明了变量/getter和setter:
package arraylistexample;
public class Assessment {
private String name;
private String type;
private double weighting;
private int count;
public Assessment(){
name = new String();
type = new String();
count = 0;
weighting = 0.0;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public double getWeighting() {
return weighting;
}
public void setWeighting(double weighting) {
this.weighting = weighting;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}这是我的图形用户界面的相关源代码,具有我的ArrayList和add/display按钮。我还没有对其他按钮进行编码:
package arraylistexample;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class AssessmentGUI extends javax.swing.JFrame {
private ArrayList<Assessment> aList;
private String name, type;
private double weighting;
private int count;
/**
* Creates new form AssessmentGUI
*/
public AssessmentGUI() {
initComponents();
aList = new ArrayList<>();
name = new String();
type = new String();
weighting = 0.0;
count = 0;
}
private void addBtnActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//get Textfield text
name = nameTf.getText();
type = typeTf.getText();
weighting = Double.parseDouble(weightingTf.getText());
Assessment a = new Assessment();
a.getName();
a.getType();
a.getWeighting();
//add to arraylist
aList.add(a);
//increment counter
count++;
}
private void displayBtnActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
for(int i = 0; i < aList.size();i++) {
JOptionPane.showMessageDialog(null, "Name: "+aList.get(i).getName()+"\n Type: "+aList.get(i).getType()+"\n Weighting: "+aList.get(i).getWeighting());
}
}发布于 2014-10-13 03:59:22
你必须使用set方法
删除:
a.getName();
a.getType();
a.getWeighting();添加:
a.setName(nameTf.getText());
a.setType(TypeTf.getText());
a.setWeighting(Double.parseDouble(weightingTf.getText()));此外,循环中的JOptionPane也不是显示结果的好方法
发布于 2014-10-13 03:56:30
在创建评估对象后,您不会将任何数据放入该对象。
// you get data but do nothing with it here
name = nameTf.getText();
type = typeTf.getText();
weighting = Double.parseDouble(weightingTf.getText());
// you create an Assessment object
Assessment a = new Assessment();
// you call a bunch of getters??? Shouldn't you be calling setters?
a.getName();
a.getType();
a.getWeighting();
aList.add(a);解决方案:当您想要设置评估实例的状态时,调用您的评估设置方法,而不是getter方法。
a.setName(name);
a.setType(type);
a.setWeighting(weighting);https://stackoverflow.com/questions/26329253
复制相似问题