所以这是一个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[](已解决!))