0

現在、テキストフィールドの変数名を取得し、入力されたものを読み取るコードのこのメソッドがあります

public Object getValue(Component c) {

          Object val = null;

          if (c instanceof CustomWizardComponent) {
             val = ((CustomWizardComponent) c).getValue();
          } else if (c instanceof JTextComponent) {
             val = ((JTextComponent) c).getText();
          } else if (c instanceof AbstractButton){
             val = ((AbstractButton) c).isSelected();
          } else if (c instanceof JComboBox){
             val = ((JComboBox) c).getSelectedItem();
          } else if (c instanceof JList){
             val = ((JList) c).getSelectedValues();
          } else {
             log.warn("Unknown component: "+c);
          }

          return val;
       }


 JTextField text = new JTextField();
 text.setName("text");
 add(text);
 System.out.print("The component value is  "+ page.getValue(text));

ここで、名前を JTextField コンポーネント名と同じ名前に設定しました。その文字列をコンポーネントに変換して同じフィールドを読み取るにはどうすればよいですか? 私の理想的な新しいメソッドは、文字列を取り込んでからコンポーネントに変換して値を取得できるはずです

 public String getValue(String item)
    {
        Component c=item;
          Object val = null;

      if (c instanceof CustomWizardComponent) {
         val = ((CustomWizardComponent) c).getValue();
      } else if (c instanceof JTextComponent) {
         val = ((JTextComponent) c).getText();
      } else if (c instanceof AbstractButton){
         val = ((AbstractButton) c).isSelected();
      } else if (c instanceof JComboBox){
         val = ((JComboBox) c).getSelectedItem();
      } else if (c instanceof JList){
         val = ((JList) c).getSelectedValues();
      } else {
         log.warn("Unknown component: "+c);
      }
      return val.toString();
     }

 JTextField textstring = new JTextField();
 text.setName("textstring");
 add(text);
 System.out.print("The component value is  "+ page.getValue("textstring"));
4

1 に答える 1

1

経験的に、返された byをキーとして使用して名前で検索できるComponent#setName()a を使用および維持できます。Map<String, Component>ComponentStringComponent#getName()

理論的には、ウィザード フレームワークによって提供されるような、より高いレベルの抽象化を検討する必要がある場合があります。

于 2013-10-04T11:11:33.360 に答える