Tenho várias tabelas para consultar e gostaria de usar somente uma jtable. O caso é que existe umas tabelas com três colunas e outras com cinco colunas, gostaria que quando eu clicasse no radiobutton que coloquei para selecionar a tabela, fosse trocado a quantia de colunas e os nomes das colunas.
Meu tablemodel atualmente está assim:
public class portariaTableModel extends AbstractTableModel{
private List<portariaBean> clientes;
public portariaTableModel(){
clientes = new ArrayList<portariaBean>();
}
public portariaTableModel(List<portariaBean> lista){
clientes.addAll(lista);
}
@Override
public Class<?> getColumnClass(int coluna){
return String.class;
}
public int getRowCount() {
return clientes.size();
}
public int getColumnCount() {
return contaColumn();
}
private int contaColumn(){
int columnCount = 2;
portariaBean bean = new portariaBean();
if("alunos".equals(bean.getTabela())){
columnCount = 5;
}else
if("cursos".equals(bean.getTabela())){
columnCount = 3;
}else
if("disciplinas".equals(bean.getTabela())){
columnCount = 5;
}else
if("professores".equals(bean.getTabela())){
columnCount = 3;
}
return columnCount;
}
@Override
public String getColumnName(int coluna){
switch(coluna){
case 0:
return "Código";
case 1:
return "Nome";
case 2:
return nomeColumnTree();
case 3:
return nomeColumnFour();
case 4:
return "Data de Nascimento";
default:
return "";
}
}
private String nomeColumnTree(){
portariaBean bean = new portariaBean();
String columnTree = null;
if ("alunos".equals(bean.getTabela())) {
columnTree ="Foto";
}else
if("cursos".equals(bean.getTabela())){
columnTree = "Turno";
}else
if("disciplinas".equals(bean.getTabela())){
columnTree = "semestre";
}else {
columnTree = "Foto";
}
return columnTree;
}
private String nomeColumnFour(){
portariaBean bean = new portariaBean();
String columnTree = new String();
if ("alunos".equals(bean.getTabela())) {
columnTree = "digital";
}else
if("disciplinas".equals(bean.getTabela())){
columnTree = "Carga Horária";
}
return columnTree;
}
public Object getValueAt(int linha, int coluna) {
fireTableStructureChanged();
portariaBean bean =clientes.get(linha);
switch(coluna){
case 0:
return bean.getCodigo();
case 1:
return bean.getNome();
case 2:
return valorColumnTree();
case 3:
return bean.getDigital();
case 4:
return bean.getDataNascimento();
default:
return null;
}
}
private String valorColumnTree(){
portariaBean bean = new portariaBean();
String columnTree = new String();
if("disciplinas".equals(bean.getTabela())){
columnTree = bean.getSemestre();
}else{
columnTree = bean.getReturnfoto().toString();
}
return columnTree;
}
@Override
public void setValueAt(Object value, int row, int col){
portariaBean bean = clientes.get(row);
switch(col){
case 0:
bean.setCodigo(value.toString());
break;
case 1:
bean.setNome(value.toString());
break;
}
fireTableDataChanged();
}
public void adiciona(portariaBean bean){
clientes.add(bean);
fireTableRowsInserted(clientes.size() - 1, clientes.size() - 1);
}
public void adicionaLista(List<portariaBean> lista) {
clientes = lista;
fireTableDataChanged();
}
public void remove(int row) {
clientes.remove(row);
fireTableRowsDeleted(row, row);
}
public int getIndice(String bean){
return clientes.indexOf(bean);
}
public void limpaLista(){
clientes.removeAll(clientes);
fireTableDataChanged();
}
}
Alguém tem uma ideia do que eu posso fazer?