So this is a programme of UML-toJava converter. The user has to input class name and class type(public/ private), and have the variables stored in virtual class. I've made an ArrayList of class object to store users' input, String className and boolean isPrivate. Later the class name and type has to be printed in a GUI window for user to copy the text.
Below is the relevant code.
And more relevant code in the end of this post. and I am pretty busy now, will discribe the problem in detail later. thanks for comment!
GUI for user to enter class infomation -
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
Here is the virtual class
public class VirtualClass {
public boolean isPrivate;
public String className = "class name";
}
Here's the method to add a new virtual class
ArrayList<VirtualClass> classes = new ArrayList<VirtualClass>();
private int size = classes.size();
public void addClass(VirtualClass clazz){
classes.add(clazz);
}
here's the method to turn the boolean isPrivate into a String for display on screen.
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;
}
And here's the method to generate the class information into String javaTextFile
public class GenJava {
ClassName classObject = new ClassName();
VirtualClass virtualObject = new VirtualClass();
String javaTextFile = (classObject.setPublic()+" "+virtualObject.className+"{\n}");
}
The error: when i opened the window which supposed to display String javaTextFile in a JTextArea, only
s class name{
}
is displayed. so I guess nothing is stored in my ArrayList of virtual class? Please help me to see what's wrong.
more relevant code:
and here is the checkName() method i used to check if the class name is equal to any java keywords or existing name in list
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
For containsKeyword() in checkName() I've used a JavaKeywords class from How to check if the class name is valid? by @MrLore.
(here's more code & problem, which may not be relevant: Problems of checkName() and storing user input to ArrayList and boolean[] (solved!))