无法将变量存储在类对象的ArrayList中

时间:2013-10-24 12:10:45

标签: java oop object user-interface arraylist

所以这是一个UML-toJava转换程序。用户必须输入类名和类类型(公共/私有),并将变量存储在virtual class中。我创建了一个类对象的ArrayList来存储用户的输入,String classNameboolean isPrivate。之后,必须在GUI窗口中打印类名和类型,以便用户复制文本。

以下是相关代码。

这篇文章末尾有更多相关代码。 我现在很忙,稍后会详细描述这个问题。感谢您的评论!

用户输入课程信息的GUI -

private class Handler implements ActionListener{
    public void actionPerformed(ActionEvent event){

        VirtualClass virtualObject = new VirtualClass();
        ClassName classO = new ClassName();
        classO.addClass(virtualObject);
        String name = inputClassName.getText();
        virtualObject.className = name;

        if (classO.checkName(name) == false){
            JOptionPane.showMessageDialog(null, "Class name invalid. " +
                    "\nEntered name should not contain java keywords or equal to other existing names. " +
                    "\nPlease try again."); // Always return "invalid" message 
        } else {
            JOptionPane.showMessageDialog(null, "Class saved."); 
            name = inputClassName.getText();
            virtualObject.className = name;
        }

        if (event.getSource() == publicButton) {
            virtualObject.isPrivate = false;
        } else if (event.getSource() == privateButton) {
            virtualObject.isPrivate = true;
        }

    }// end actionPerformed()

}// end Handler class

这是虚拟课程

public class VirtualClass {

    public boolean isPrivate;
    public String className = "class name";


}

这是添加新虚拟类的方法

ArrayList<VirtualClass> classes = new ArrayList<VirtualClass>();
private int size = classes.size();

public void addClass(VirtualClass clazz){
      classes.add(clazz);
}

此处是将boolean isPrivate变为String以便在屏幕上显示的方法。

public String setPublic(){
    String s = "s";
    for (int i = 0; i < classes.size(); i++) {
        if (classes.get(i).isPrivate) 
            s = " private";
        else 
            s = "public";
    }
    return s;
}

这是将类信息生成为String javaTextFile

的方法
public class GenJava {

ClassName classObject = new ClassName();
VirtualClass virtualObject = new VirtualClass();

String javaTextFile = (classObject.setPublic()+" "+virtualObject.className+"{\n}");

}

错误:当我打开应该在JTextArea中显示String javaTextFile的窗口时     s class name{ } 被展示。所以我猜我的ArrayList中没有存储任何虚拟类?请帮我看看有什么不对。

更相关的代码:

这里是我用来检查类名是否等于任何java关键字或列表中现有名称的checkName()方法

public boolean checkName(String name){
    boolean check = true;
    for (int i=0; i<=size; i++){
        if (keyObject.containsKeyword(classes.get(i).className) || name.equals(classes.get(i).className)){
            boolean o = false;
            check = o;
        }// end if
    }// end for
    return check;
}// end checkName

对于containsKeyword()中的checkName(),我使用了来自How to check if the class name is valid?JavaKeywords类@MrLore。

(这里有更多代码和问题,可能不相关:Problems of checkName() and storing user input to ArrayList and boolean[] (solved!)

0 个答案:

没有答案