我想知道为什么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);
}
答案 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”。
这些都是愚蠢的错误,但发生此类错误的可能性并不是空的。