Executando verificação de segurança...
1

Tentei usar o new BorderLayout, FlowLayout, tentei criar o objeto e depois passar como argumento, conforme tua orientação. Não funcionou. Você pode ver se eu implementei errado? ou se é alguma coisa outra questão...

`
import eclipse.Curso;
import java.util.List;
import dao.CursoDAO;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class FormRelatorioCursos extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTable tblCursos;

/**
 * Launch the application.
 */
public static void main(String[] args) {
	EventQueue.invokeLater(new Runnable() {
		public void run() {
			try {
				FormRelatorioCursos frame = new FormRelatorioCursos();
				frame.setVisible(true);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	});
}

/**
 * Create the frame.
 */
public FormRelatorioCursos() {
	setTitle("Relat\u00F3rio de Cursos");
	setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	setBounds(100, 100, 872, 490);
	contentPane = new JPanel();
	contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

	setContentPane(contentPane);
	contentPane.setLayout(null);
	
	JLabel lblNewLabel = new JLabel("Relat\u00F3rio de Cursos");
	lblNewLabel.setBounds(248, 10, 355, 44);
	lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 36));
	contentPane.add(lblNewLabel);
	
	tblCursos = new JTable(criarTabela());
	tblCursos.setBounds(608, 32, 0, 0);
	tblCursos.setToolTipText("");
	contentPane.add(tblCursos);
	
            //ESSE AQUI FOI O CÓDIGO CRIADO AUTOMATICAMENTE AO SELECIONAR NO DESIGN
	/*tblCursos.setModel(new DefaultTableModel(
		new Object[][] {
			{null, null, null, null},
		},
		new String[] {
			"ID", "Dura\u00E7\u00E3o", "Nome do Curso", "N\u00EDvel"
		}
	));
	tblCursos.setBounds(10, 82, 836, 358);
	contentPane.add(tblCursos);*/ ACABA AQUI, COMENTEI PRA TENTAR SUA SOLUÇÃO
	
	preencheTabela();
	
}

public DefaultTableModel criarTabela() {
	
	String[][] dados = new String[][] {
		
		{"1", "2", "3", "4"}
		
	};
	
	String[] colunas = new String[] {
		
		"ID", "Duração", "Nome do Curso", "Nível"
		
	};
	
	DefaultTableModel tblCursos = new DefaultTableModel(dados, colunas);
	
	return tblCursos;
	
}

private void preencheTabela() {
	
	CursoDAO cursoDAO = new CursoDAO();
	List<Curso> listaCursos = cursoDAO.getCursos();
	
	DefaultTableModel tabelaCursos = (DefaultTableModel) tblCursos.getModel();
	
	for(Curso c : listaCursos) {
		
		Object[] obj = new Object[] {
				c.getId(),
				c.getNomecurso(),
				c.getNivel(),
				c.getDuracao()
		};
		
		tabelaCursos.addRow(obj);
		
	}
	
}

}

`

Tentei também colocar no construtor da classe, assim funcionou igual como estava antes, sendo cabeçalho:

String[][] dados = new String[][] { }; String[] colunas = new String[] { "ID", "Duração", "Nome do Curso", "Nível" }; DefaultTableModel dtm = new DefaultTableModel(dados, colunas); tblCursos = new JTable(dtm); tblCursos.setBounds(10, 85, 836, 355); tblCursos.setToolTipText(""); contentPane.add(tblCursos);

Na verdade estou aprendendo essa parte da interface gráfica numa série de aulas no youtube, eu estudo por conta própria, então existe algumas coisas que eu acabo não descobrindo, por exemplo, que quem usa normalmente Swing é com NetBeans. Inclusive a aula é no netbeans, mas eu gosto do Eclipse e normalmente tento fazer as coisas diferente ou acrescentando algum nível de dificuldade (dentro dos meus limites, claro) pra ir aprendendo a resolver os problemas que aparecem. Como eu não faço faculdade, acredito que é a melhor forma de ir descobrindo essas coisas. Ahh, e nem sei o que é SWT, mas já vou atrás de pesquisar!

Carregando publicação patrocinada...