Popular JTable com Genesis

3 respostas
M

O Bean

@Entity
@Table(name = "CURSO")
public class Curso {
	
	@Id
	@Column(name = "CODCURSO")
	private String codcurso;
	
	@Column(name = "CURSO")
	private String curso;
		
	public String getCodcurso() {
		return codcurso;
	}
	public void setCodcurso(String codcurso) {
		this.codcurso = codcurso;
	}
	public String getCurso() {
		return curso;
	}
	public void setCurso(String curso) {
		this.curso = curso;
	}


}

O Form

@Form
public class CursoForm {
	
	List<Curso> cursos;
	
	public List<Curso> getCursos() {
		return cursos;
	}

	public void setCursos(List<Curso> cursos) {
		this.cursos = cursos;
	}

	@Action
	public void Inserir() {
	}

	@DataProvider(objectField="cursos")
	public List<Curso> populaCursos() {
		
		DaoFactory factory = new DaoFactory();
		return factory.getCursoDao().listaTudo();

	 
	}

}

A View

@ViewHandler
public class CursoView extends JDialog {
	
	SwingBinder binder = null;
	

	
	public CursoView(Frame owner) {
		super(owner);
		initComponents();
	
	}

        private void initComponents() {
		dialogPane = new JPanel();
		contentPanel = new JPanel();
		scrollPane1 = new JScrollPane();

		cursoTable = new JTable(new DefaultTableModel(new String[] {"Codigo", "Curso"}, 0));
		cursoTable.setName("curso");
		cursoTable.putClientProperty(SwingBinder.COLUMN_NAMES, new String[] {"codcurso", "curso"});
                
                ...
                
       		binder = new SwingBinder( this, new CursoForm());
		binder.bind();
       }

}

Está faltando alguma coisa. Porque na minha tabela possuo os cursos mas não é preenchido no JTable.
Minha dúvida é a seguinte eu preciso iterar os objetos da lista ou o genesis faz isso automaticamente.

3 Respostas

mister_m

O nome do @DataProvider:

não bate com o name da table:

Basta corrigir. Tenho quase certeza que o genesis gerou um warning dizendo que não há componente com o name correto na tela.

M

Resolvi o problema.

O Form ficou

@Form
public class CursoForm {
	
	Curso curso;
	
	public Curso getCurso() {
		return curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

	@Action
	public void Inserir() {
	}

	@DataProvider(widgetName="cursos", objectField="curso")
	public List<Curso> populaCursos() {
		
		DaoFactory factory = new DaoFactory();
		return factory.getCursoDao().listaTudo();

	 
	}

}

Na View alterei o nome do componente

cursoTable = new JTable(new DefaultTableModel(new String[] {"Codigo", "Curso"}, 0));
cursoTable.setName("cursos");  // aqui
cursoTable.putClientProperty(SwingBinder.COLUMN_NAMES, new String[] {"codcurso", "curso"});
M

Michael,

No momento que vc respondeu, eu encontrei um post seu aqui.

Obrigado.

Criado 13 de junho de 2008
Ultima resposta 13 de jun. de 2008
Respostas 3
Participantes 2