0

我想知道为什么 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);
}
4

2 回答 2

1

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

这也没有意义:

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

因为看起来只有 grupos 集合中的最后一个 GrupoBean 才有机会显示在您的 GUI 中。

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

于 2013-01-28T18:18:12.500 回答
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”。这些是愚蠢的错误,但发生此类错误的机会并非空穴来风。

于 2013-01-28T20:25:44.977 回答