ここに GUI ウィンドウがあり、基本的にユーザーに JRadioButton を選択し、JTextField に何かを入力してから、確認/キャンセルを選択するよう求めます。
これは、UML から Java へのテキスト ファイルを作成するプロジェクトです。ユーザーはクラス情報を入力し、UML 関係を選択します。このプログラムは、JTextField に Java clsas テキストを出力する必要があります。Eclipseで新しいクラスを作成するときと同じです。
私がやりたいのは、boolean[] を作成してブール値の配列を格納することです。ユーザーが JRadioButton_A を選択すると true が格納され、ユーザーが JRadioButton_B を選択すると false が格納されます。また、JTextField に入力されたものをチェックする必要があります。メソッドが false を返した場合、文字列は ArrayList に格納されます。
以下は私のコードです - getName() メソッドと true と false を格納するための boolean[] にはいくつかの問題があります。ユーザーが名前を再度入力する必要がある場合、破棄された文字列/ブール値が配列に保存されます。(下手な英語でごめんなさい!) このプログラムを作る良い方法はありますか?物事を複雑にしているように感じます。もっと簡単な方法があるはずです。
これは、ユーザーにクラス情報を入力するように求める UI スタッフです。ユーザーは public/private を選択し、クラス名と JTextField を入力する必要があります
private class Handler implements ActionListener{
public void actionPerformed(ActionEvent event){
String name = inputClassName.getText();
classObject.addName(name);
while (classObject.checkName(name) == true){
JOptionPane.showMessageDialog(null, "Class name invalid. " +
"\nEntered name should not contain java keywords or equal to other existing names. " +
"\nPlease try again."); // doesn't work
name = inputClassName.getText();
classObject.addName(name);
}// end if
JOptionPane.showMessageDialog(null, "Class saved."); // doesn't work
name = inputClassName.getText();
classObject.addName(name);
}// end actionPerformed()
}// end Handler class
private class Handler2 implements ActionListener{
public void actionPerformed(ActionEvent event){
boolean b = true;
b = classObject.setPP();
}
}
private class Handler3 implements ActionListener{
public void actionPerformed(ActionEvent event){
boolean b = false;
b = classObject.setPP();
}
}
ArrayList および boolean[] への入力を格納するためのメソッドは次のとおりです。
Scanner input = new Scanner(System.in);
JavaKeywords keyObject = new JavaKeywords();
private ArrayList<String> className = new ArrayList<String>();
private String name = new String();
private int size = className.size();
private Boolean[] bArray = new Boolean[size];
public boolean checkName(String name){
boolean check = true;
for (int i=0; i<=size; i++){
if (keyObject.containsKeyword(className.get(i)) || name.equals(className.get(i))){
boolean o = false;
check = o;
}// end if
}// end for
return check;
}// end checkName
public boolean setPP(){
boolean b = true;
return b;
}
public void addPP(Boolean[] bArray){
this.bArray = bArray;
for (int i=0; i>=size; i++){
bArray[i] = setPP();
}
}// add a Array of boolean. for className[i], its class type = item[i] in bArray.
// public = true, private = false
public String getPublicPrivate(){
String p = "";
for (int i =0; i<=size; i++){
if(bArray[i]=true)
p = "public";
else
p = "private";
}
return p;
}
解決済み
解決策: string className
andをクラスに保存boolean isPrivate
し、クラスを にすると、ArrayList
すべての問題を解決できます。しかし、その後、別の問題に直面しました。それはcheckName()
、コードを変更した後に機能しないことです。ここはActionListener
private class Handler implements ActionListener{
public void actionPerformed(ActionEvent event){
VirtualClass virtualObject = new VirtualClass();
classObject.addClass(virtualObject);
String name = inputClassName.getText();
virtualObject.className = name;
if (classObject.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()
そしてここに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()
を使用しましたか? @MrLoreによる。JavaKeywords