2013-10-27 3 views
-1

Я хочу получить такой результат. Если я нажму кнопку завершения, класс будет добавлен к umlClassList (через setName) и publicPrivate ArrayLists в классе StoreData. Тогда я хочу, чтобы преобразовать их в строку и показать их в области Текстовое поле в GenCode классе, как public ClassName{}Почему это не возвращает точную строку, которую я хочу?

Я хочу, чтобы получить строку s3=s1+s2+s3 к textarea в GenCode классе после вызова genCode() в StoreData классе, но почему он возвращает только {}? Я хочу, чтобы получить public ClassName{}

public class CreateUmlClass extends JFrame { 

JRadioButton radio1Public = new JRadioButton("Public"); // Radio Button 
JRadioButton radio2Private = new JRadioButton("Private"); 
JButton finish = new JButton("Finish"); 
JButton cancel = new JButton("Cancel"); 
JButton clearAll = new JButton("Clear All"); 
JLabel classNameLabel = new JLabel("Class Name:");// Class name label 
JLabel methodNameLabel = new JLabel("Method Name:");// Class name label 
ButtonGroup group = new ButtonGroup(); 
JTextField methodNameTextField = new JTextField(20);// Class Name Text Box 
JTextField classNameTextField = new JTextField(20);// Class Name Text Box 
private JFrame frame; 

public CreateUmlClass() { 
    super("Create class"); 

    this.setLocation(100, 100); 
    // this.setVisible(true); 
    this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    this.setLayout(new FlowLayout()); 


    add(classNameLabel); 
    add(classNameTextField); 


    group.add(radio1Public); 
    group.add(radio2Private); 
    add(radio1Public); 
    add(radio2Private); 
    add(methodNameLabel); 
    add(methodNameTextField); 
    add(finish); 
    add(cancel); 
    add(clearAll); 


    Handler handle = new Handler(); 
    finish.addActionListener(handle); 
    cancel.addActionListener(handle); 
    clearAll.addActionListener(handle); 

} 

private class Handler implements ActionListener { 
    String ClassName; 
    StoreData obj = new StoreData(); 

    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == finish) { 
      ClassName=classNameTextField.getText(); 
      if (classNameTextField != null && (radio1Public.isSelected() || radio2Private.isSelected())) { 
       obj.setName(ClassName); 
       if (radio1Public.isSelected()) { 
        obj.CheckisPrivate(false); 

       } else if (radio1Public.isSelected()) { 
        obj.CheckisPrivate(true); 
       } 
       JOptionPane.showMessageDialog(frame, "Your class is stored"); 
      } else { 
       JOptionPane.showMessageDialog(frame, 
         "Class Name or/and access modifier cannot be empty.", 
         "Inane warning", 
         JOptionPane.WARNING_MESSAGE); 
      } 
     } 

     else if (e.getSource() == cancel) { 
      setVisible(false); 
     } 
     else if (e.getSource() == clearAll) { 
      classNameTextField.setText(null); 
      group.clearSelection(); 
      methodNameTextField.setText(null);    
     } 
    } 

} 
} 

StoreData класс

public class StoreData { 

    String name; 
    static ArrayList<String> umlClassList = new ArrayList<String>(); 
    static ArrayList<String> publicPrivate = new ArrayList<String>(); 

    public void setName(String className) { 

     umlClassList.add(className); 

    } 

    public void CheckisPrivate(boolean isPrivate) { 
     if (isPrivate = true) { 
      publicPrivate.add("Private"); 
     } else if (isPrivate = false) { 
      publicPrivate.add("Public"); 
     } 
    } 

    public String genCode() { 
     String s3=""; 
     for (int index = 0; index < umlClassList.size(); index++) { 
      String s1,s2; 
      s1=publicPrivate.get(index); 
      s2=umlClassList.get(index); 
      s3=s3+s1+s2;   
     } 
     return s3+"{"+"}"; 

    } 

} 

GenCode класс

public class GenCode extends JFrame{ 

    JLabel genedCode = new JLabel("The generated code:"); 
    StoreData data = new StoreData(); 
    String finalCode =data.genCode(); 
    JTextArea codeBox = new JTextArea(finalCode,5,30); 
    JButton okbtn = new JButton("OK"); 
    JButton cancel = new JButton("Cancel"); 
    Handler handle = new Handler(); 

    private JFrame frame; 
    public GenCode(){ 
     super("The Generated Code"); 
     setSize(200, 900); 
     setLocation(200, 200); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setLayout(new FlowLayout()); 


     //add(codeBox); 
     add(codeBox); 
     codeBox.setVisible(true); 
     codeBox.setEditable(false); 
     add(okbtn); 
     add(cancel); 


     //add(codeBox,BorderLayout.CENTER); 
     cancel.addActionListener(handle); 

    } 
    private class Handler implements ActionListener { 

     public void actionPerformed(ActionEvent e) { 
      if(e.getSource()==cancel){ 
       setVisible(false); 
      } 
     } 
     } 

} 
+1

Он возвращает «{}» вместо этого? –

+7

Я не понимаю, почему вы пытаетесь это сделать, но 'if (isPrivate = true)', безусловно, неверно. Вероятно, вы имеете в виду 'if (isPrivate == true)' (или лучше 'if (isPrivate)'). – LaurentG

+1

Вы хотите конкатенацию или арифметическую сумму? Для последнего см. Этот возможный дубликат: [с использованием eval в Java] (http://stackoverflow.com/questions/2605032/using-eval-in-java) – trashgod

ответ

1

Ваш код

public String genCode() { 
    String s3=""; 
    for (int index = 0; index < umlClassList.size(); index++) { 
     String s1,s2; 
     s1=publicPrivate.get(index); 
     s2=umlClassList.get(index); 
     s3=s3+s1+s2;   
    } 
    return s3+"{"+"}"; 

} 

может быть упрощено до

public String genCode() { 
    String s3=""; 
     String s1,s2; 
     if(umlClassList.size()>0) 
     { 
      s1=publicPrivate.get(umlClassList.size()-1); 
      s2=umlClassList.get(umlClassList.size()-1); 
     } 
     s3=s3+s1+s2;   
    return s3+"{"+"}"; 

} 

Таким образом, причина возвращает «{}», потому что «umlClassList» пуст и вы не обновление s1 и s2. Вы можете проверить это на

if(umlClassList.size()==0) System.out.println("umlClassList is empty"); 
+0

содержит ошибку, поскольку она имеет значение после s3 = s3 + s2 + s1; – Mong

+0

Вы могли бы разработать? ошибка где? –

+0

У меня есть синтаксическая ошибка в '' 'после строки' s3 = s3 + s1 + s2; ' – Mong

Смежные вопросы