つまり、これは UML から Java へのコンバーターのプログラムです。ユーザーは、クラス名とクラス タイプ (public/private) を入力し、変数を に格納する必要がありますvirtual class
。String className
ユーザーの入力を格納するクラス オブジェクトの ArrayList を作成しました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()
で、クラス名が有効かどうかを確認する方法のクラスcheckName()
を使用しましたか? @MrLoreによる。JavaKeywords
(関連しない可能性のあるコードと問題は次のとおりです: checkName() の問題と、ユーザー入力を ArrayList および boolean[] に格納する問題 (解決済み!) )