Pra que serve:
public TabelaModelTeste(){
teste = new ArrayList<TesteBean>();
}
public TabelaModelTeste(ArrayList<TesteBean> lista){
this();
teste.addAll(lista);
}
Pra que serve:
public TabelaModelTeste(){
teste = new ArrayList<TesteBean>();
}
public TabelaModelTeste(ArrayList<TesteBean> lista){
this();
teste.addAll(lista);
}
Pra voce criar seu model com valores.
o this() no segundo construtor chama o primeiro sem argumentos, que vai criar a lista chamada teste para voce.
Aconteceu um problema no meu código:
Exception in thread “main” java.lang.NullPointerException
at TelaSwing.montarTabela(TelaSwing.java:22 )
at TelaSwing.montarTudo(TelaSwing.java:34 )
at Main.main(Main.java:12 )
TableModel
import java.sql.SQLException;
import javax.swing.table.AbstractTableModel;
public class ModeloTabela extends AbstractTableModel {
private static final long serialVersionUID = 1L;
DAO DAO = new DAO();
private int linha;
String[] colunas = {"ID Componente", "Componente", "Servidor de Origem", "Servidor de Destino", "Alias do Componente", "Ordem de Origem", "Ordem de Destino"};
InfraBridge[] resultado = DAO.consulta();
public ModeloTabela(String[] colunass, InfraBridge[] resultados) throws SQLException{
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public int getRowCount() {
try {
linha = DAO.consulta().length;
} catch (SQLException e){
e.printStackTrace();
}
return linha;
}
@Override
public Object getValueAt(int indiceLinha, int indiceColuna) {
//verifica qual valor deve ser retornado
if (indiceColuna == 0) {
return DAO.infraBridge.getidComponente();
} else if (indiceLinha == 1) {
return DAO.infraBridge.getComponente();
} else if (indiceLinha == 2) {
return DAO.infraBridge.getServidorOrigem();
} else if (indiceLinha == 3) {
return DAO.infraBridge.getServidorDestino();
} else if (indiceLinha == 4) {
return DAO.infraBridge.getAliasComponente();
} else if (indiceLinha == 5) {
return DAO.infraBridge.getOrdem1();
} else if (indiceLinha == 6) {
return DAO.infraBridge.getOrdem2();
}
return "";
}
}
Cade at TelaSwing.montarTabela(TelaSwing.java:22 ) ?
Ok ficou faltando, agora eu consegui arrumar… mas aconteceu uma coisa… quando eu executo meu código não está aparecendo nada na tela, apenas uma mini janela com o nome da aplicação.
import java.awt.BorderLayout;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class TelaSwing extends JFrame {
DAO DAO = new DAO();
private static final long serialVersionUID = 1L;
JTable tabela = new JTable();
JButton botaoIncluir = new JButton();
JButton botaoDetalhes = new JButton();
JPanel painel = new JPanel();
JScrollPane scrollPainel = new JScrollPane();
TelaSwing() throws SQLException{
getContentPane().setLayout(new BorderLayout());
montarPainel();
montarTabela();
}
public void montarTabela() throws SQLException{
ModeloTabela modelo = new ModeloTabela();
tabela.setModel(modelo);
scrollPainel.add(tabela);
}
public void montarPainel(){
painel.add(scrollPainel, BorderLayout.NORTH);
getContentPane().add(new JButton("oi"));
getContentPane().add(painel, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
}
import java.sql.SQLException;
import javax.swing.table.AbstractTableModel;
public class ModeloTabela extends AbstractTableModel {
private static final long serialVersionUID = 1L;
DAO DAO = new DAO();
private int linha;
String[] colunas = {"ID Componente", "Componente", "Servidor de Origem", "Servidor de Destino", "Alias do Componente", "Ordem de Origem", "Ordem de Destino"};
InfraBridge[] resultado;
public ModeloTabela() throws SQLException{
this.resultado = DAO.consulta();
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public int getRowCount() {
linha = resultado.length;
return linha;
}
@Override
public Object getValueAt(int indiceLinha, int indiceColuna) {
//verifica qual valor deve ser retornado
if (indiceColuna == 0) {
return DAO.infraBridge.getidComponente();
} else if (indiceLinha == 1) {
return DAO.infraBridge.getComponente();
} else if (indiceLinha == 2) {
return DAO.infraBridge.getServidorOrigem();
} else if (indiceLinha == 3) {
return DAO.infraBridge.getServidorDestino();
} else if (indiceLinha == 4) {
return DAO.infraBridge.getAliasComponente();
} else if (indiceLinha == 5) {
return DAO.infraBridge.getOrdem1();
} else if (indiceLinha == 6) {
return DAO.infraBridge.getOrdem2();
}
return "";
}
@Override
public String getColumnName(int colunaIndice) {
return colunas[colunaIndice];
}
@Override
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 String.class;
case 4:
return String.class;
case 5:
return int.class;
case 6:
return int.class;
default:
throw new IndexOutOfBoundsException("Coluna fora dos limites");
}
}
}
//import java.io.BufferedReader;
//import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class DAO {
Conexao conexao = new Conexao();
public String filtroAlterar;
public String filtroAdd = "";
Scanner entrada = new Scanner(System.in);
InfraBridge infraBridge = new InfraBridge();
LoggingTest log = new LoggingTest();
private InputStream txt;
private String confirma;
// private String linha = "";
private boolean errado;
private int idComponente;
private int idDestino;
private int idOrigem;
private String componente;
private String verificaComponente;
private int ordem1;
private int verificaOrdem1;
private int ordem2;
private int verificaOrdem2;
private String UPDATE1, UPDATE2, UPDATE3, UPDATE4, UPDATE5, UPDATE6;
private String DELETAR1, DELETAR2, DELETAR3, DELETAR4, DELETAR5;
private String INCLUIR_ORDEM1;
private String INCLUIR_ORDEM2;
private final static String INCLUIR_TFWKIBDG_CMPT = ("INSERT INTO TFWKIBDG_CMPT (NOME_CMPT,NOME_ALIA_CMPT)VALUES (?,?)");
private final static String INCLUIR_TFWKIBDG_GRUP_SERD = ("INSERT INTO TFWKIBDG_GRUP_SERD (NOME_GRUP_SERD)VALUES (?)");
private final static String INCLUIR_TFWKIBDG_SERD = ("INSERT INTO TFWKIBDG_SERD (NOME_SERD)VALUES (?)");
private final static String CONSULTA = " SELECT SERD.COD_SERD, GRD_SERD.COD_GRUP_SERD, NUM_ORDE_GRUP, NUM_ORDE_SERD, NOME_GRUP_SERD, NOME_SERD, NOME_ALIA_CMPT ,CMPT.COD_CMPT, NOME_CMPT FROM TFWKIBDG_CMPT_GRUP_SERD COMP WITH(NOLOCK)"
+ " INNER JOIN TFWKIBDG_GRUP_SERD_SERD GRP_SERD_SERD WITH(NOLOCK)"
+ " ON COMP.COD_GRUP_SERD = GRP_SERD_SERD.COD_GRUP_SERD"
+ " INNER JOIN TFWKIBDG_GRUP_SERD GRD_SERD WITH(NOLOCK)"
+ " ON GRP_SERD_SERD.COD_GRUP_SERD = GRD_SERD.COD_GRUP_SERD"
+ " INNER JOIN TFWKIBDG_SERD SERD WITH(NOLOCK)"
+ " ON GRP_SERD_SERD.COD_SERD = SERD.COD_SERD"
+ " INNER JOIN TFWKIBDG_CMPT CMPT WITH(NOLOCK)"
+ " ON COMP.COD_CMPT = CMPT.COD_CMPT";
private String FILTRO;
private String CONSULTAD;
private String CONSULTAC;
private String CONSULTAO1;
private String CONSULTAO2;
// aprimorar para string buffer.*******
/*
* public String getConsulta(final Integer codigo) { StringBuffer sql = new
* StringBuffer(); sql.append("select * from table ");
* sql.append("where table.codigo = "); sql.append(codigo); return
* sql.toString(); }
*/
public InfraBridge[] consulta() throws SQLException {
Conexao conexao = new Conexao();
Connection conn = conexao.conectar();
conn.setAutoCommit(false);
InfraBridge[] ib = null;
try {
ResultSet rs = null;
componente = infraBridge.getComponente();
if (componente != null) {
FILTRO = (" WHERE NOME_CMPT = " + "'" + componente + "'");
CONSULTAD = CONSULTA + FILTRO;
rs = conexao.executarConsulta(CONSULTAD);
}
if (componente == null) {
rs = conexao.executarConsulta(CONSULTA);
}
List<InfraBridge> result = new LinkedList<InfraBridge>();
System.out.println(); // formatação de linha
if (rs.next()) {
infraBridge.imprimirColuna();
do {
// InfraBridge infraBridge = new InfraBridge();
infraBridge.setOrdem1(rs.getInt("NUM_ORDE_GRUP"));
infraBridge.setOrdem2(rs.getInt("NUM_ORDE_SERD"));
infraBridge.setidDestino(rs.getInt("COD_GRUP_SERD"));
infraBridge.setidOrigem(rs.getInt("COD_SERD"));
infraBridge.setidComponente(rs.getInt("COD_CMPT"));
infraBridge.setServidorDestino(rs
.getString("NOME_GRUP_SERD"));
infraBridge.setServidorOrigem(rs.getString("NOME_SERD"));
infraBridge.setComponente(rs.getString("NOME_CMPT"));
infraBridge.setAliasComponente(rs
.getString("NOME_ALIA_CMPT"));
result.add(infraBridge);
infraBridge.imprimirRS();
} while (rs.next());
conexao.fecharResultSet(rs);
ib = new InfraBridge[result.size()];
result.toArray(ib);
errado = true;
} else {
System.out.println("..");
errado = false;
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw new RuntimeException(ex);
} finally {
conexao.desconnection();
}
return ib;
}
public void incluir() throws IOException, SQLException {
Conexao conexao = new Conexao();
consulta();
consultaOrdem1();
consultaOrdem2();
consultaComponente();
confirma();
if (verificaOrdem1 == 0 & verificaOrdem2 == 0
& verificaComponente == null) {
if (confirma.equalsIgnoreCase("S")) {
Connection conn = conexao.conectar();
conn.setAutoCommit(false);
if (errado == false) {
try {
idComponente = conexao
.execDML(
INCLUIR_TFWKIBDG_CMPT,
new Object[] {
infraBridge.getComponente(),
infraBridge
.getAliasComponenteAlterar() });
idDestino = conexao.execDML(INCLUIR_TFWKIBDG_GRUP_SERD,
new Object[] { infraBridge
.getServidorDestinoAlterar() });
idOrigem = conexao.execDML(INCLUIR_TFWKIBDG_SERD,
new Object[] { infraBridge
.getServidorOrigemAlterar() });
INCLUIR_ORDEM1 = ("INSERT INTO TFWKIBDG_CMPT_GRUP_SERD (COD_CMPT, COD_GRUP_SERD, NUM_ORDE_GRUP) VALUES ("
+ idComponente + "," + idDestino + ",?)");
INCLUIR_ORDEM2 = ("INSERT INTO TFWKIBDG_GRUP_SERD_SERD (COD_GRUP_SERD, COD_SERD, NUM_ORDE_SERD) VALUES ("
+ idDestino + "," + idOrigem + ",?)");
conexao.updateDML(INCLUIR_ORDEM1,
new Object[] { infraBridge.getOrdem1Alterar() });
conexao.updateDML(INCLUIR_ORDEM2,
new Object[] { infraBridge.getOrdem2Alterar() });
conn.commit();
System.out.println("Componente incluido com sucesso");
} catch (Exception e) {
conn.rollback();
}
} else {
help();
}
} else {
System.out.println("Operação cancelada.");
}
} else {
help();
}
}
public void alterar() throws IOException, SQLException {
Conexao conexao = new Conexao();
consulta();
consultaOrdem1();
consultaOrdem2();
consultaComponente();
confirma();
if (verificaOrdem1 == 0 & verificaOrdem2 == 0
& verificaComponente != null) {
if (confirma.equalsIgnoreCase("S")) {
Connection conn = conexao.conectar();
conn.setAutoCommit(false);
if (errado == true) {
try {
if (infraBridge.getComponenteAlterar() != null) {
UPDATE1 = "UPDATE TFWKIBDG_CMPT SET NOME_CMPT = '"
+ infraBridge.getComponenteAlterar()
+ "' WHERE COD_CMPT = "
+ infraBridge.getidComponente();
conexao.executarDML(UPDATE1);
}
if (infraBridge.getServidorOrigemAlterar() != null) {
UPDATE2 = "UPDATE TFWKIBDG_SERD SET NOME_SERD = '"
+ infraBridge.getServidorOrigemAlterar()
+ "' WHERE COD_SERD = "
+ infraBridge.getidOrigem();
conexao.executarDML(UPDATE2);
}
if (infraBridge.getServidorDestinoAlterar() != null) {
UPDATE3 = "UPDATE TFWKIBDG_GRUP_SERD SET NOME_GRUP_SERD = '"
+ infraBridge.getServidorDestinoAlterar()
+ "' WHERE COD_GRUP_SERD = "
+ infraBridge.getidDestino();
conexao.executarDML(UPDATE3);
}
if (infraBridge.getOrdem1Alterar() != 0) {
UPDATE4 = "UPDATE TFWKIBDG_CMPT_GRUP_SERD SET NUM_ORDE_GRUP = '"
+ infraBridge.getOrdem1Alterar()
+ "' WHERE COD_CMPT = "
+ infraBridge.getidComponente();
conexao.executarDML(UPDATE4);
}
if (infraBridge.getOrdem2Alterar() != 0) {
UPDATE5 = "UPDATE TFWKIBDG_GRUP_SERD_SERD SET NUM_ORDE_SERD = '"
+ infraBridge.getOrdem2Alterar()
+ "' WHERE COD_GRUP_SERD = "
+ infraBridge.getidDestino();
conexao.executarDML(UPDATE5);
}
if (infraBridge.getAliasComponenteAlterar() != null) {
UPDATE6 = "UPDATE TFWKIBDG_CMPT SET NOME_ALIA_CMPT = '"
+ infraBridge.getAliasComponenteAlterar()
+ "' WHERE COD_CMPT = "
+ infraBridge.getidComponente();
conexao.executarDML(UPDATE6);
}
conn.commit();
} catch (Exception e) {
conn.rollback();
}
} else {
help();
}
} else {
System.out.println("Operação cancelada.");
}
} else {
help();
}
}
public void deletar() throws IOException, SQLException {
Conexao conexao = new Conexao();
consulta();
confirma();
if (confirma.equalsIgnoreCase("S")) {
Connection conn = conexao.conectar();
conn.setAutoCommit(false);
if (errado == true) {
try {
DELETAR1 = ("DELETE FROM TFWKIBDG_CMPT_GRUP_SERD WHERE COD_CMPT = '"
+ infraBridge.getidComponente() + "'");
conexao.executarDML(DELETAR1);
DELETAR2 = ("DELETE FROM TFWKIBDG_GRUP_SERD_SERD WHERE COD_SERD = '"
+ infraBridge.getidOrigem() + "'");
conexao.executarDML(DELETAR2);
DELETAR3 = ("DELETE FROM TFWKIBDG_CMPT WHERE COD_CMPT = '"
+ infraBridge.getidComponente() + "'");
conexao.executarDML(DELETAR3);
DELETAR4 = ("DELETE FROM TFWKIBDG_GRUP_SERD WHERE COD_GRUP_SERD = '"
+ infraBridge.getidDestino() + "'");
conexao.executarDML(DELETAR4);
DELETAR5 = ("DELETE FROM TFWKIBDG_SERD WHERE COD_SERD = '"
+ infraBridge.getidOrigem() + "'");
conexao.executarDML(DELETAR5);
conn.commit();
System.out
.println("O componente foi removido do banco de dados.");
} catch (Exception e) {
conn.rollback();
}
} else {
help();
}
} else {
System.out.println("Operação cancelada.");
}
}
public String consultaComponente() throws SQLException {
Conexao conexao = new Conexao();
Connection conn = conexao.conectar();
conn.setAutoCommit(false);
CONSULTAC = "SELECT NOME_CMPT FROM TFWKIBDG_CMPT WHERE NOME_CMPT = '"
+ componente + "'";
verificaComponente = null;
try {
ResultSet rs = conexao.executarConsulta(CONSULTAC);
if (rs.next()) {
verificaComponente = rs.getString("NOME_CMPT");
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw new RuntimeException(ex);
} finally {
conexao.desconnection();
}
return verificaComponente;
}
public int consultaOrdem1() throws SQLException {
Conexao conexao = new Conexao();
Connection conn = conexao.conectar();
conn.setAutoCommit(false);
ordem1 = infraBridge.getOrdem1Alterar();
CONSULTAO1 = "SELECT NUM_ORDE_GRUP FROM TFWKIBDG_CMPT_GRUP_SERD WHERE NUM_ORDE_GRUP = '"
+ ordem1 + "'";
verificaOrdem1 = 0;
try {
ResultSet rs = conexao.executarConsulta(CONSULTAO1);
if (rs.next()) {
verificaOrdem1 = rs.getInt("NUM_ORDE_GRUP");
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw new RuntimeException(ex);
} finally {
conexao.desconnection();
}
return verificaOrdem1;
}
public int consultaOrdem2() throws SQLException {
Conexao conexao = new Conexao();
Connection conn = conexao.conectar();
conn.setAutoCommit(false);
ordem2 = infraBridge.getOrdem2Alterar();
CONSULTAO2 = "SELECT NUM_ORDE_SERD FROM TFWKIBDG_GRUP_SERD_SERD WHERE NUM_ORDE_SERD = '"
+ ordem2 + "'";
verificaOrdem2 = 0;
try {
ResultSet rs = conexao.executarConsulta(CONSULTAO2);
if (rs.next()) {
verificaOrdem2 = rs.getInt("NUM_ORDE_SERD");
}
conn.commit();
} catch (SQLException ex) {
conn.rollback();
throw new RuntimeException(ex);
} finally {
conexao.desconnection();
}
return verificaOrdem2;
}
public void help() throws IOException {
txt = getClass().getClassLoader().getResourceAsStream("txt/HELP.txt");
Scanner s = new Scanner(txt);
while (s.hasNext()) {
System.out.println(s.nextLine()); // exibindo conteudo do arquivo
}
}
private void confirma() {
do {
System.out.println("Confirma operação?");
confirma = entrada.nextLine();
} while (confirma.isEmpty() & !confirma.equalsIgnoreCase("S")
& !confirma.equalsIgnoreCase("N"));
}
}
Ok, montei meu código da TableModel e quando vou compilar ela não aparece… fui debugar e me gerou o seguinte erro no método getColumnCount():
JTable.createDefaultColumnsFromModel() line: not available [local variables unavailable]
Meu modelo ficou assim:
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class ModeloTabela extends AbstractTableModel {
private static final long serialVersionUID = 1L;
DAO DAO = new DAO();
private String[] colunas = {"ID Componente", "Componente", "Servidor de Origem", "Servidor de Destino", "Alias do Componente", "Ordem de Origem", "Ordem de Destino"};
/* Lista de Sócios que representam as resultado. */
private List<InfraBridge> resultado;
public ModeloTabela() throws SQLException {
resultado = DAO.consulta();
}
/* Retorna a quantidade de colunas. */
@Override
public int getColumnCount() {
// Está retornando o tamanho do array "colunas".
// Mas como o array é fixo, vai sempre retornar 4.
return colunas.length;
}
/* Retorna a quantidade de resultado. */
@Override
public int getRowCount() {
// Retorna o tamanho da lista de sócios.
return resultado.size();
}
/* Retorna o nome da coluna no Ãndice especificado.
* Este método é usado pela JTable para saber o texto do cabeçalho. */
@Override
public String getColumnName(int columnIndex) {
// Retorna o conteúdo do Array que possui o nome das colunas
// no Ãndice especificado.
return colunas[columnIndex];
};
/* Retorna a classe dos elementos da coluna especificada.
* Este método é usado pela JTable na hora de definir o editor da célula. */
@Override
public Class<?> getColumnClass(int columnIndex) {
// Retorna a classe referente a coluna especificada.
// Aqui é feito um switch para verificar qual é a coluna
// e retornar o tipo adequado. As colunas são as mesmas
// que foram especificadas no array "colunas".
switch (columnIndex) {
case 0: // Primeira coluna é o nome, que é uma String.
return int.class;
case 1: // Segunda coluna é o telefone, que também é uma String..
return String.class;
case 2: // Terceira coluna é a data de cadastro,
// apesar de ser do tipo Calendar,
// estou retornando Date por causa da formatação.
return String.class;
case 3: // Quarta coluna é a mensalidade, um double.
return String.class;
case 4: // Quarta coluna é a mensalidade, um double.
return String.class;
case 5: // Quarta coluna é a mensalidade, um double.
return int.class;
case 6: // Quarta coluna é a mensalidade, um double.
return int.class;
default:
// Se o Ãndice da coluna não for válido, lança um
// IndexOutOfBoundsException (Exceção de Ãndice fora dos limites).
// Não foi necessário verificar se o Ãndice da linha é inválido,
// pois o próprio ArrayList lança a exceção caso seja inválido.
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
/* Retorna o valor da célula especificada
* pelos Ãndices da linha e da coluna. */
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// Pega o sócio da linha especificada.
InfraBridge infraBridge = resultado.get(rowIndex);
// Retorna o campo referente a coluna especificada.
// Aqui é feito um switch para verificar qual é a coluna
// e retornar o campo adequado. As colunas são as mesmas
// que foram especificadas no array "colunas".
switch (columnIndex) {
case 0: // Primeira coluna é o nome.
return infraBridge.getidComponente();
case 1: // Segunda coluna é o telefone.
return infraBridge.getComponente();
case 2: // Terceira coluna é a data de cadastro.
return infraBridge.getServidorOrigem();
case 3: // Quarta coluna é a mensalidade.
return infraBridge.getServidorDestino();
case 4: // Quarta coluna é a mensalidade.
return infraBridge.getAliasComponente();
case 5: // Quarta coluna é a mensalidade.
return infraBridge.getOrdem1();
case 6: // Quarta coluna é a mensalidade.
return infraBridge.getOrdem2();
default:
// Se o Ãndice da coluna não for válido, lança um
// IndexOutOfBoundsException (Exceção de Ãndice fora dos limites).
// Não foi necessário verificar se o Ãndice da linha é inválido,
// pois o próprio ArrayList lança a exceção caso seja inválido.
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
}