所以这是一个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}");
}
错误:当我打开应该在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!))