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とtxtGrupoJTextFieldsは表示されているものと同じではありません。これはさまざまな状況で発生する可能性があり、多くの場合、継承の誤用があります。このクラスは偶然あなたの別のクラスから継承しますか?

また、これは意味がありません:

    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」に変更しましたが、メソッド内ではまだ「Java」がJTextField表示されています。JFrameこれらはばかげた間違いですが、そのような間違いが発生する可能性はゼロではありません..

于 2013-01-28T20:25:44.977 に答える