Ola amigos, boa tarde
Ainda estou começando a mexer com AbstractTableModel, e surgem diversas duvidas e gostaria de uma ajuda…
segue meu código abaixo para ajudar e entender o meu problema
Essa é minha classe AbstractTableModel
public class TabelaDeCadastros extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private List<RelProdutos> linhas;
private String[] colunas = new String[]{
"Produto", "Operador", "Turno", "Lote", "Volume", "Qtde.Produzida", "Data Entrada", "Data Saída"
};
public TabelaDeCadastros() {
linhas = new ArrayList<RelProdutos>();
}
public TabelaDeCadastros(List<RelProdutos> listaDeProdutos){
linhas = new ArrayList<RelProdutos>(listaDeProdutos);
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public int getRowCount() {
return linhas.size();
}
public String getColumnName(int columnIndex){
return colunas[columnIndex];
}
public Class<?> getColumnClass(int columnIndex){
switch (columnIndex) {
case 0:
return String.class;
case 1:
return String.class;
case 2:
return String.class;
case 3:
return Integer.class;
case 4:
return Integer.class;
case 5:
return Integer.class;
case 6:
return Date.class;
case 7:
return Date.class;
default:
throw new IndexOutOfBoundsException("Fora dos limites!");
}
}
public Object getValueAt(int rowIndex, int columnIndex) {
RelProdutos relProdutos = linhas.get(rowIndex);
switch (columnIndex) {
case 0:
return relProdutos.getProduto();
case 1:
return relProdutos.getOperador();
case 2:
return relProdutos.getTurno();
case 3:
return relProdutos.getLote();
case 4:
return relProdutos.getVolume();
case 5:
return relProdutos.getQuantidade();
case 6:
return relProdutos.getDataEntrada();
case 7:
return relProdutos.getDataSaida();
default:
throw new IndexOutOfBoundsException("Fora dos limites!!!");
}
}
@Override
public boolean isCellEditable(int arg0, int arg1) {
return false;
}
public void addListaDeProdutos(List<RelProdutos> produtos){
int tamanhoAntigo = getRowCount();
linhas.addAll(produtos);
fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);
}
}
Esse é o JFrame
public class RelatorioRegistros extends JFrame {
private static final long serialVersionUID = 1L;
private JTable tblRegistro;
private TabelaDeCadastros registrosModel;
public RelatorioRegistros() {
super("Relatórios e Registros");
initialize();
}
private void initialize(){
Container tela = getContentPane();
tela.add(new JScrollPane(getTblProdutos()));
getModel().addListaDeProdutos(addRegistros());
setSize(800, 600);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private JTable getTblProdutos(){
if(tblRegistro == null){
tblRegistro = new JTable();
tblRegistro.setModel(new TabelaDeCadastros());
}
return tblRegistro;
}
private TabelaDeCadastros getModel(){
if(registrosModel == null){
registrosModel = (TabelaDeCadastros) getTblProdutos().getModel();
}
return registrosModel;
}
private List<RelProdutos> addRegistros(){
List<RelProdutos> registros = new ArrayList<RelProdutos>();
registros = new ControleController().listaProdutos();
return registros;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new RelatorioRegistros().setVisible(true);
}
});
}
}
Enfim note que crio um JTable e seto a classe TabelaDeCadastros nela ali no metodo getTblProdutos(), assim que executa a Tabela fica ‘full’ no JFrame,
o que eu queria é que a Tabela ficasse tipo ocupando apenas um espaço no JFrame, de preferencia na parte de baixo (por ex: da meitade pra baixo somente),
se poderem me ajudar agradeço desde já… Abraço