Não sei bem se o erro é gráfico ou se foi porque eu adicionei um getText() no field no query para capturar os dados digitados.
vejam as excessões:
java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1031)
at java.awt.Container.add(Container.java:903)
at consulta.ptela1(consulta.java:123)
at consulta.<init>(consulta.java:81)
at consulta.main(consulta.java:69)
Agora o código:
[code] public class consulta extends JFrame {
private Font f = new Font("Arial", Font.PLAIN, 11);
private Connection con, con2;
private JTable tabela, tabela2;
private JScrollPane scroller, scroller2;
private JTabbedPane abas;
private JPanel p1, p2;
JLabel labCons1;
JTextField fieldCons1;
JButton botOK1;
JLabel labCons2;
JTextField fieldCons2;
JButton botOK2;
public static void main(String[] args) {
try {
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.metal.MetalLookAndFeel");
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
consulta telaConsulta = new consulta();
telaConsulta.setVisible(true);
}
public consulta() {
super("Acompanhamento do gado");
setSize(750, 400);
setVisible(true);
abas = new JTabbedPane();
abas.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
abas.addTab("Visualizar dados", null, ptela1(), "Lista de gado cadastrado");
// abas.addTab("Vacinas", null, ptela2(), "Lista de vacinas");
this.add(abas);
}
private JComponent ptela1() {
p1 = new JPanel(new BorderLayout());
JPanel p1Consulta = new JPanel(new FlowLayout());
labCons1 = new JLabel("Pesquisar por código");
fieldCons1 = new JTextField(15);
botOK1 = new JButton("OK");
botOK1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
buscaTabela();
}
});
p1Consulta.add(labCons1);
p1Consulta.add(fieldCons1);
p1Consulta.add(botOK1);
JPanel pBotoes = new JPanel(new BorderLayout());
JPanel b2Bot = new JPanel(new BorderLayout());
JButton botSalvar = new JButton("Salvar");
JButton botImprimir = new JButton("Imprimir");
b2Bot.add(botSalvar, BorderLayout.CENTER);
b2Bot.add(botImprimir, BorderLayout.EAST);
JPanel botAtual = new JPanel(new BorderLayout());
JButton botAtualizar = new JButton("Atualizar");
botAtual.add(botAtualizar, BorderLayout.WEST);
pBotoes.add(b2Bot, BorderLayout.EAST);
pBotoes.add(botAtual, BorderLayout.WEST);
p1.add(p1Consulta, BorderLayout.NORTH);
p1.add(scroller, BorderLayout.CENTER);
p1.add(pBotoes, BorderLayout.SOUTH);
// buscaTabela(); // chamada do método "buscaTabela()"
return p1;
}
private void buscaTabela() {
// inicialização de conexão ao banco ****
String url = “jdbc:mysql://localhost/gado”;
String usuario = “root”;
String senha = “2017”;
try {
Class.forName(“com.mysql.jdbc.Driver”);
con = DriverManager.getConnection(url, usuario, senha);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, “Conexão não estabelecida!\n” + e,
“Erro”, JOptionPane.ERROR_MESSAGE);
}
Statement st;
ResultSet rs;
try {
Vector cabecalho = new Vector();
Vector linhas = new Vector();
st = con.createStatement();
// Selecionando vacinas ****
String tableName = “tabela1”;
rs = st .executeQuery("select codGado, nomeGado, idadeGado, datInsemin, "+
"datParto, datSecagem, sexoCria, datVacina FROM " + tableName+ “WHERE codGado = '” + fieldCons1.getText() + “’;”); // foi o que eu adicionei por último, antes de apontar excessões
rs.next();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
cabecalho.addElement(rsmd.getColumnName(i));
do {
linhas.addElement(proximaLinha(rs, rsmd));
} while (rs.next());
tabela = new JTable(linhas, cabecalho);
tabela.setFont( f );
scroller = new JScrollPane(tabela); /*não tem como eu adicionar o scroller
a partir daqui, por isso que adicionei no JComponent ptela1 */
validate();
st.close();
} catch (SQLException sqlex) {
JOptionPane.showMessageDialog(this, "Erro ao retornar dado!\n" + sqlex,
"Erro", JOptionPane.ERROR_MESSAGE);
}
}
private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd) {
Vector LinhaAtual = new Vector();
try {
LinhaAtual.addElement(rs.getInt("codGado"));
LinhaAtual.addElement(rs.getString("nomeGado"));
LinhaAtual.addElement(rs.getInt("idadeGado"));
LinhaAtual.addElement(rs.getString("datInsemin"));
LinhaAtual.addElement(rs.getString("datParto"));
LinhaAtual.addElement(rs.getString("datSecagem"));
LinhaAtual.addElement(rs.getString("sexoCria"));
LinhaAtual.addElement(rs.getString("datVacina"));
} catch (SQLException sqlex) {
JOptionPane.showMessageDialog(this, "Erro ao retornar dado!\n" + sqlex,
"Erro", JOptionPane.ERROR_MESSAGE);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "Erro inesperado!\n" + ex,
"Erro", JOptionPane.ERROR_MESSAGE);
}
return LinhaAtual;
} // fim do vector [/code]
A segunda aba é praticamente a mesma coisa, só muda a tabela do banco.
Acho que é no scroller mesmo mas antes não apontava excessoes, por isso não tenho certeza.
Eu preciso de uma ajuda com isso.
Abraços.
Obrigado.