0

所以这是一个UML-toJava转换器的程序。用户必须输入类名和类类型(公共/私有),并将变量存储在virtual class. 我制作了一个类对象的 ArrayList 来存储用户的输入,String className并且boolean 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}");

}

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

更相关的代码:

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

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()如何检查类名是否有效?通过@MrLore。checkName()JavaKeywords

(这里有更多代码和问题,可能不相关:CheckName() 问题和将用户输入存储到 ArrayList 和 boolean[](已解决!)

4

0 回答 0