为什么我的JTextField没有被填充

时间:2013-01-28 18:16:41

标签: java swing jtextfield

我想知道为什么JTextField没有被填充,并且System.out.println测试是否正确完成?有人可以帮我澄清这个疑问吗? 我的方法。:

protected void ApresentaGrupos(List<GrupoBean> grupos) {  
String codigo = "";  
        String grupo = "";  
        for (GrupoBean g : grupos) {  
            codigo = g.getCodigo().toString().trim();  
            grupo = g.getGrupo();  

            System.out.println("" + g.getCodigo().toString().trim()); // TEST
            System.out.println("" + g.getGrupo().toUpperCase()); // TEST
        }  
        this.habilitaCampos();  
        txtCodigo.setText("TEST"); // nor that message is being shown  
        txtGrupo.setText(grupo);  
        System.out.println("teste" + codigo);  
        System.out.println("teste" + grupo);
}

2 个答案:

答案 0 :(得分:1)

问题在您发布的代码中无法识别,因此我们只能猜测。也许你的txtCodigo和txtGrupo JTextFields与正在显示的那些不一样。这可能发生在各种情况下,通常是在滥用继承的情况下。这个类是偶然继承你的另一个类吗?

这也没有意义:

    for (GrupoBean g : grupos) {  
        codigo = g.getCodigo().toString().trim();  
        grupo = g.getGrupo();  
    }  
    txtGrupo.setText(grupo);  

因为看起来只有grupos集合中的最后一个GrupoBean才有可能在你的GUI中显示。

根据mKorbel:为了获得更好的帮助,请考虑创建并发布SSCCE

答案 1 :(得分:1)

txtCodigo添加到container后,您可能会重新构建txtCodigo,现在将文本放入新构建的JTextArea中。因此,您在txtCodigo中添加的值并未反映在容器中添加的实际JTextArea中。 例如,请考虑下面的代码:

import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.JTextField;
public class  DoubleConstruction extends JFrame
{
    JTextField field = new JTextField(20);
    public DoubleConstruction()
    {
        super("JTextArea Demo");
    }
    public void prepareAndShowGUI()
    {
        getContentPane().add(field);
        field.setText("Java");
        field = new JTextField(20);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }
    public void setText()
    {
        field.setText("J2EE");
    }
    public static void main(String[] args) 
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                DoubleConstruction dc = new DoubleConstruction();
                dc.prepareAndShowGUI();
                dc.setText();
            }
        });
    }
}

在向prepareAndShowGUI()添加字段后的方法ContentPane中,重建字段。在main方法中虽然我已将字段内容更改为“J2EE”,但JTextField中显示的JFrame仍显示“Java”。 这些都是愚蠢的错误,但发生此类错误的可能性并不是空的。