我想检查我的35个文本字段中是否有任何值,然后颜色会改变

时间:2017-04-21 10:43:02

标签: java swing

每个我可以用作数组的循环吗? 好像值改变了会改变颜色的颜色,如果是,那么颜色将恢复正常

顺便说一下我是java的新手

private void bt1MouseClicked(java.awt.event.MouseEvent evt) 
{
    if  (txt1.getText().equals("6652") ) {
        txt1.setBackground(Color.yellow);
    } 
    if  (txt2.getText().equals("6652") ) {
        txt2.setBackground(Color.yellow);
    } 
    if  (txt3.getText().equals("6652") ) {
        txt3.setBackground(Color.yellow);
    }
}

4 个答案:

答案 0 :(得分:1)

您可以将JTextFieldString相关联的数据结构。

您可以使用Map<JTextField, String>对象:

    Map<JTextField, String> map = new HashMap<>();
    // add elements in
    map.put(textField1, "6652");
    map.put(textField2, "1142");
    map.put(textField3, "2231");
    ...    

    private void bt1MouseClicked(java.awt.event.MouseEvent evt) 
      // iterate on it
      for (Entry<JTextField, String> entry : map.entrySet()) {
          JTextField field = entry.getKey();
          String value = entry.getValue();
          if (field.getText().equals(value)) {
              field.setBackground(Color.yellow);
          }
      }
    }

答案 1 :(得分:1)

您应该从可迭代的模型对象生成文本框。这样,您就可以完全控制生成的所有文本框。对于这种情况,davidxx的答案要好得多,但因为你是初学者......

您可以拥有两个数组

TextBox[] tbs = new TextBox[35];
String[] vals = new String[];


public void initStrings()
{
    // fill vals here, manually or automatically
}


public void setProperties(String[] vals1)
{
    for(int i = 0; i < tbs.length; i++)
    {
        tbs[i] = new TextBox();
        vals[i] = vals1[i];
        // Do more with your textbox here
    }
}


public void refreshTextBoxes()
{
    for(int i = 0; i < tbs.length; i++)
    {
        if (tbs[i].getText().equals(vals[i])
        {
             tbs[i].setBackground(Color.yellow);
        }
    }
}

private void bt1MouseClicked(java.awt.event.MouseEvent evt) 
{
    refreshTextBoxes();
    // Do more here, if you like.
}

答案 2 :(得分:0)

将所有文本框保存在文本框列表中,然后您可以遍历所有文本框以更新它们。像这样。

List<TextBox> text_boxes = new ArrayList<>();

然后添加您想要检查的所有文本框,

text_boxes.add(text_box1);
text_boxes.add(text_box2);
 ...
text_boxes.add(text_box34);

然后有一个方法来更改匹配像

这样的条件的文本框的值
private void changeColor(TextBox tex1) 
{
    if  (txt1.getText().equals("6652") ) {
    txt1.setBackground(Color.yellow);
} 
if  (txt2.getText().equals("1142") ) {
    txt2.setBackground(Color.yellow);
} 
if  (txt3.getText().equals("2231") ) {
    txt3.setBackground(Color.yellow);
  }
 }

然后在按钮的单击处理程序中,您可以遍历所有文本框以更新颜色

private void bt1MouseClicked(java.awt.event.MouseEvent evt) 
  {
     //loop through the list
     for (TextBox text_box : text_boxes) {
           changeColor(text_box);
         }
   }

答案 3 :(得分:0)

string [] txtfield = {&#34; 1122&#34;,&#34; 2231&#34;,&#34; 3344&#34;}并在循环中使用