2012-04-23 14 views
0

現在、私は学校のチームプロジェクトで作業していますが、fieldMap内のtextFieldsにsetText()の問題があります。 fieldMap.get(fieldTitle.values()[i])を使用して値を取得できますが、HashMapsおよびgbcsに関する理解が不足しているため、テキストフィールドにテキストを設定する方法を理解できません。テキストフィールドのテキストを設定しようとしています

class InstructorEditorPanel extends JPanel { 
enum FieldTitle { 
    B_NUMBER("B Number"), FIRST_NAME("First Name"), LAST_NAME("Last Name"); 
    private String title; 

    private FieldTitle(String title) { 
    this.title = title; 
    } 

    public String getTitle() { 
    return title; 
    } 
}; 

private static final Insets WEST_INSETS = new Insets(5, 0, 5, 5); 
private static final Insets EAST_INSETS = new Insets(5, 5, 5, 0); 
private Map<FieldTitle, JTextField> fieldMap = new HashMap<FieldTitle, JTextField>(); 

public InstructorEditorPanel() { 
    setLayout(new GridBagLayout()); 
    setBorder(BorderFactory.createCompoundBorder(
     BorderFactory.createTitledBorder("Instructor Editor"), 
     BorderFactory.createEmptyBorder(5, 5, 5, 5))); 
    GridBagConstraints gbc; 
    for (int i = 0; i < FieldTitle.values().length; i++) { 
    FieldTitle fieldTitle = FieldTitle.values()[i]; 
    gbc = createGbc(0, i); 
    add(new JLabel(fieldTitle.getTitle() + ":", JLabel.LEFT), gbc); 
    gbc = createGbc(1, i); 
    JTextField textField = new JTextField(10); 
    add(textField, gbc); 

    fieldMap.put(fieldTitle, textField); 
    } 
} 

private GridBagConstraints createGbc(int x, int y) { 
    GridBagConstraints gbc = new GridBagConstraints(); 
    gbc.gridx = x; 
    gbc.gridy = y; 
    gbc.gridwidth = 1; 
    gbc.gridheight = 1; 

    gbc.anchor = (x == 0) ? GridBagConstraints.WEST : GridBagConstraints.EAST; 
    gbc.fill = (x == 0) ? GridBagConstraints.BOTH 
     : GridBagConstraints.HORIZONTAL; 

    gbc.insets = (x == 0) ? WEST_INSETS : EAST_INSETS; 
    gbc.weightx = (x == 0) ? 0.1 : 1.0; 
    gbc.weighty = 1.0; 
    return gbc; 
} 

public String getFieldText(FieldTitle fieldTitle) { 
    return fieldMap.get(fieldTitle).getText(); 
} 
+0

私たちのsetTextを(呼び出すためにあなたの試みを表示) –

答えて

1

public void setFieldText (FieldTitle fieldTitle, String toSet) { 
    fieldMap.get (fieldTitle).setText (toSet); 
} 

あなたは他の方法があるあなたのInstructorEditorPanel、に方法を置きます。それを呼び出すには、そのクラスの内部列挙型にアクセスする必要があります。

public class TestFrame extends JFrame { 

    public TestFrame() { 
     super ("testframe"); 
     setSize (400, 400); 
     setVisible (true); 
    } 

    public static void main (String [] args) 
    { 
     InstructorEditorPanel iep = new InstructorEditorPanel(); 
     TestFrame tf = new TestFrame(); 
     tf.add (iep); 
     iep.setFieldText (InstructorEditorPanel.FieldTitle.FIRST_NAME, "Donald"); 
    } 
} 

テスト済みです。

+0

これはもともと何私であります変数fieldTitleを別のクラスから使用することはできません。それは私にシンボルエラーを見つけることができません。 –

+0

@ShaneKelsey:サンプルコードでアクセスする方法を参照してください。 –

+0

ありがとうございました –

2

テキストフィールドにテキストを設定する必要がある場合は、そのtextFieldでsetTextメソッドを呼び出します。

あなたはすでにあなたのようなのsetTextメソッドを呼び出すことにより、テキストを設定することができます

fieldMap.get(fieldTitle.values()[i]) 

を呼び出すことによってTextFieldを取得しているので:

fieldMap.get(fieldTitle.values()[i]).setText('Something'); 
+0

それは私がやろうとしていたものです。しかし、テキストフィールドのテキストを別のクラスから設定しようとしています。だから私は列挙からfieldTitle情報を読むことができません。私は見つけることができませんシンボルエラー/ –

+0

あなたはこのような何かをする必要がありますenumにアクセスする:InstructorEditorPanel.FieldTitle.values() – mprabhat

関連する問題