Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在尝试为文本字段设置文本_Java_Swing_Hashmap_Jtextfield - Fatal编程技术网

Java 正在尝试为文本字段设置文本

Java 正在尝试为文本字段设置文本,java,swing,hashmap,jtextfield,Java,Swing,Hashmap,Jtextfield,我目前正在学校的一个团队项目中工作,在fieldMap中的textFields上设置Text()时遇到困难。我可以使用fieldMap.get(fieldTitle.values()[I])从这些字段中获取值,但由于我对哈希映射和GBC缺乏了解,我无法确定如何将文本设置到文本字段 class InstructorEditorPanel extends JPanel { enum FieldTitle { B_NUMBER("B Number"), FIRST_NAME("First Name

我目前正在学校的一个团队项目中工作,在fieldMap中的textFields上设置Text()时遇到困难。我可以使用fieldMap.get(fieldTitle.values()[I])从这些字段中获取值,但由于我对哈希映射和GBC缺乏了解,我无法确定如何将文本设置到文本字段

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();
}
class InstructorEditorPanel扩展了JPanel{
枚举字段标题{
B_编号(“B编号”)、名(“名字”)、姓(“姓氏”);
私有字符串标题;
私有字段标题(字符串标题){
this.title=标题;
}
公共字符串getTitle(){
返回标题;
}
};
私人静态最终插图西侧插图=新插图(5,0,5,5);
私有静态最终插图东_插图=新插图(5,5,5,0);
private Map fieldMap=new HashMap();
公共讲师编辑面板(){
setLayout(新的GridBagLayout());
SetBordOrder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder(“讲师编辑器”),
createEmptyByOrder(5,5,5,5));
gridbaggbc;
对于(int i=0;i
使用

使用


只是出于对称性原因猜测:

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");
    }
}

经过测试,成功了。

只是出于对称性的原因猜测:

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");
    }
}

已测试,已工作。

如果必须在文本字段中设置文本,请调用该文本字段上的方法

因为您已经通过调用

fieldMap.get(fieldTitle.values()[i])
您可以通过调用setText方法设置文本,如:

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

如果必须在文本字段中设置文本,则调用该文本字段上的方法

因为您已经通过调用

fieldMap.get(fieldTitle.values()[i])
您可以通过调用setText方法设置文本,如:

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

显示您调用setText()的尝试显示您调用setText()的尝试这就是我试图做的;但是,我试图从另一个类设置textfields文本。因此,我无法从枚举中读取fieldTitle信息。我遇到找不到符号错误/访问枚举时,需要执行以下操作:InstructorEditorPanel.fieldTitle.values()这就是我试图做的;但是,我试图从另一个类设置textfields文本。因此,我无法从枚举中读取fieldTitle信息。我遇到找不到符号错误/访问枚举时,需要执行以下操作:InstructorEditorPanel.fieldTitle.values()这是我最初所做的,但变量fieldTitle不能从另一个类中使用。它给我一个找不到符号错误。这是我最初所做的,但变量fieldTitle不能从另一个类中使用。它给我一个找不到符号错误。