galera to pretendendo fazer uma tela mais o menos igual a essa, ai preciso da ajuda de voces nessa questao
q eu nao sei qual componente usar do SWING pra fazer essa parte do meio onde aparece o produto ( CODIGO, DESCRIÇAO , QTDE, VALOR …) eu pensei numa JTABLE onde eu digitaria o codigo numa coluna e apareceria nas outras colunas no caso a descricao e o valor
Se alguem concorda em fazer essa parte com uma JTABLE me ajudem no q eu devo me focar agora pra fazer essa consulta
so iniciante procurando um caminho … valeuu
Com toda certeza um JTable. Precisei implementar uma tabela essa semana e estes links me ajudaram muito:
http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JTable.html
http://download.oracle.com/javase/tutorial/uiswing/components/table.html
e para fazer o meu TableModel, 3 links foram muitos esclarecedores:
.
e para fazer a consulta, acredito que terás que trabalhar com o ouvinte de eventos “SelectionListener”
Aqui no fórum tem muito material bom sobre JTable.
Espero que ajude!
Voce pode usar Jtable como o Daniel disse. Pra fazer a consulta primeiro voce vai ter que nos dizer qual a forma de persistencia dos dados? File, BD convencional, etc… Independente de qual seja, voce vai basicamente ter que implementar um CRUD que receba por exemplo um produto e retorne as outras informacoes, vai depender da sua necessidade. Entao a sua tabela vai receber esses dados e coloca-los na tela. Os passos mais ou menos sao esses. Outra duvida mais especifica da um grito aew que a gente ajuda.
Alguem tem um exemplo de JTABLE q q faz consulta no banco apartir de um valor???
tipo
digito o codigo na propria jtable e ele me retorna as outras colunas
Galera eu consegui fazer uma Jtable q me retorna-se tudo do banco
mais meu proposito nao e esse
queria quando eu digitasse o codigo do produto ela me retorna-se as informaçoes do proprio na Jtable
Vejam o codigo:
[code]package Visual;
import java.awt.event.;
import java.sql.;
import javax.swing.;
import java.util.;
import java.awt.Dimension;
import javax.swing.JButton;
import java.awt.BorderLayout;
import DAO.CadastroDAO;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Rectangle;
import javax.swing.BorderFactory;
public class Estoque extends JFrame{
private Connection con;
static JTable tabela;
public Estoque(){
super(“Estoque:” );
String url = "jdbc:mysql://localhost:3307/sistemacomercial";
String usuario = "root";
String senha = "123456";
try{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
con = DriverManager.getConnection(url, usuario, senha);
}
catch (Exception e){
JOptionPane.showMessageDialog(null,"Conexão não estabelecida","Mensagem do Programa",
JOptionPane.ERROR_MESSAGE);
}
buscaTabela();
setSize(900,400);
setVisible(true);
}
static JButton opcao = new JButton(“Opções”);
static ActionListener Action = new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
Opcao o = new Opcao();
o.getJFrame().setVisible(true);
} catch (Exception e1) {
e1.printStackTrace();
}
}
};
public static void main(String args[]){
Estoque app = new Estoque();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void buscaTabela(){
Statement st;
ResultSet res;
opcao.addActionListener(Action);
add(opcao, BorderLayout.SOUTH );
try{
Vector cabecalho = new Vector();
Vector linhas = new Vector();
st = con.createStatement();
res = st.executeQuery("SELECT * FROM cadastroproduto ORDER BY data DESC");
res.next();
ResultSetMetaData rsmd = res.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
cabecalho.addElement(rsmd.getColumnName(i));
do{
linhas.addElement(proximaLinha(res,rsmd));
}
while (res.next());
tabela = new JTable(linhas,cabecalho);
tabela.setSize(new Dimension(494, 184));
tabela.getColumnModel();
JScrollPane scroller = new JScrollPane( tabela );
scroller.setSize(new Dimension(703, 276));
getContentPane().add(scroller, BorderLayout.CENTER);
validate();
st.close();
}
catch (SQLException sqlex){
}
}
private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd){
Vector LinhaAtual = new Vector();
try{
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
switch(rsmd.getColumnType(i)){
case Types.VARCHAR: LinhaAtual.addElement(rs.getString(i));
break;
case Types.TIMESTAMP: LinhaAtual.addElement(rs.getDate(i));
break;
case Types.DOUBLE: LinhaAtual.addElement(new Double(rs.getDouble(i)));
break;
}
}
catch(SQLException e){
}
return LinhaAtual;
}
} // @jve:decl-index=0:visual-constraint="10,10"[/code]
Vou acompanhar seu posto pq da forma que voce falou, seria bem interessante, se eu encontrar algo na internet eu post aqui tbm.
abraços
Amigo faça um CRUD para a sua tabela de produtos. Nao faça macarronada de codigo misturando regras de negocio, apresentacao e modelo. Voce vai ter muita dor de cabeça depois com isso. Leia sobre padroes de projeto. Isso que voce esta tentando fazer é perfeitamente possivel e facil de fazer se voce construir um CRUD para o seu banco das tabelas que voce vai precisar.
Eu vou só dar a ideia pra voce. Vou supor que nessa sua tabela tem as colunas produto, descricao e codigo. Voce entao deve fazer um CRUD que recebe um objeto DTO - que contem apenas os atributos da sua tabela - e faz o where de acordo com os parametros inicializados desse objeto e retorna um ArrayList tambem de objetos DTO. Ou seja, se voce inicializa somente o produto e faz um Delete por exemplo, o seu Modelo vai lah no banco e faz a consulta: Delete from cadastroprodutos where produto = objetoDTO.getProduto. Tudo isso de forma transparente. Ou seja, depois de implementado o seu modelo voce pode fazer qualquer tipo de consulta no seu banco de forma inteiramente transparente, apenas inicializando os dados de um DTO e passando para o CRUD.
Se voce nao entendeu o que eu disse, sugiro dar uma lida sobre padroes de projeto/MVC e depois disso reler o que eu disse. Eu repito, se voce fizer macarronada de codigo vai ter muita dor de cabeça depois, alem de que acho bem dificil voce resolver o seu problema sem implementar um modelo pro seu banco.
A primeira vista pode parecer complicado mas depois que voce tiver familiarizado com isso em 20 min voce cria um modelo pra uma tabela simples que nem essa.