2013-07-08 52 views
0

我有一个ArrayList<JTextField>有N个职位。然而,我必须做出改变,我需要添加一个JComboBox到那个数组,所以我的问题是:Combobox和TextField ArrayList的类型

我需要在我的ArrayList上声明什么类型的数据?

我试过用ArrayList<Object>ArrayList<JComponent>但它不工作,因为行,我设置水平对齐报告错误。

private ArrayList<JTextField> jTextFieldAL; 

for (int i = 0; i < size; i++) { 
      jLabelAL.add(new JLabel("" + tagNamesAL.get(i))); 
      if (tagNamesAL.get(i).equals("AGENT_NAME")) { 
       jTextFieldAL.add(new tools.AgentNameTextField()); 
       jTextFieldAL.get(i).setHorizontalAlignment(SwingConstants.RIGHT); 
      } else { 
       switch (tagContentAL.get(i).toString().toLowerCase()) { 
        case "int": 
         jTextFieldAL.add(new tools.IntegerTextField(this.simul)); 
         jTextFieldAL.get(i).setHorizontalAlignment(SwingConstants.RIGHT); 
         break;              
        case "double": 
        case "float": 
         jTextFieldAL.add(new tools.DoubleTextField(this.simul)); 
         jTextFieldAL.get(i).setHorizontalAlignment(SwingConstants.RIGHT); 
         break; 
        default: 
         jTextFieldAL.add(new JTextField()); 
         jTextFieldAL.get(i).setHorizontalAlignment(SwingConstants.RIGHT); 
         break; 
       } 
      } 

      jTextFieldAL.get(i).addKeyListener(keyEvent); 
      p1.add(jLabelAL.get(i)); 
      p1.add(jTextFieldAL.get(i)); 
     } 
+0

您是否尝试过使用JComponent,但铸造到例如JTextField,如果你需要使用文本特定的方法? –

+1

1.简单的问题 - 什么是目标,2.如何可以帮助你把JComponents放到数组中,3.不要为JTextComponents使用KeyListener,4.为了更好地帮助更快地发布[SSCCE](http:// sscce。 org /),short,runnable,compilable, – mKorbel

+0

抱歉mKorbel,我真的不能:\ – SaintLike

回答

0

我找到了解决我的问题的方法。我不需要将ComboBox添加到ArrayList。我只是将ComboBox directy添加到面板。

像这样:

for (int i = 0; i < size; i++) { 
      jLabelAL.add(new JLabel("" + tagNamesAL.get(i))); 
      if (tagNamesAL.get(i).equals("BEHAVIOUR")){ 
       addCSPComboBox(p1); 
       break; 
      } 

而且addCSPComboBox方法:

public void addCSPComboBox(JPanel p1){ 
    CSPComboBox cspComboBox = new tools.CSPComboBox(); 
    JLabel behaviour = new JLabel("BEHAVIOUR"); 
    p1.add(behaviour); 
    p1.add(cspComboBox); 

} 

这只是正常的我的问题。我希望我可以帮助任何人有同样的问题;)

0

我tryed有一个ArrayList和ArrayList但因为线,在这里我设置水平对齐方式报告错误,这是行不通的:这是预料之中,因为对象/ JComponent中没有setHorizo​​ntalAlignment方法。 因此,您需要将它降级为JTextField,然后调用此API。

我不确定这是不是一个好主意,因为要降级别对象,您需要知道在每个索引中存储对象的实际类型(JTextFild或JComboBox),否则您将碰到ClassCasteException。