Ola Estou desenvolvendo um Software Automotivo, e estou presisando de uma ajudinha se alguem poder dar umas dicas eu agradeço.
Como faço para alterar os itens de uma Jlist a partir de outra outra ou de um botão, como por exemplo eu escolho a Montadora de um determinado veiculo clicando nela e a lista de Modelos e Alterada conforme eu escolho a marca. e quando clico no botão caminhões ele altera as a lista de montadoras. clicando no modelo ele abre janela normalmente com as informações do veiculo.
Ola elias.
De onde vem os dados? você usa uma consulta a um banco ou tem algum array com os nomes?
Não teria um modo simples de apenas mudar os nomes da JlistModelos clicando em um item da JlistMontadora? Se não tiver vou tentar criando um banco de dados usando postgresql. e peço sua ajuda novamente. Obrigado.
ter tem , mas você vai ter que fazer um array e alimentar ele com toda a informação , seu código vai ficar maior, não vai ter persistência e além disso a manutenção da sua base de dados será dentro do programa o que não é muito legal de se fazer no caso de precisar incluir ou retirar alguma coisa.
te perguntei sobre onde esta sua base de dados porque usando um banco, além da facilidade da manutenção você terá persistência e fica muito mais fácil alimentar sua view pois você pode buscar e criar as regras já nos selects.
tipo se o usuário clicou em carros:
select * from montadoras ( te retorna trodas as montadoras e joga na view) ;
na lista de montadoras clicou em “AUDI” :
select * from modelos where montadora=‘audi’ ;
entendeu?
até porque como você disse que ao clicar em modelo ele deverá trazer as informações do modelo que foi clicado , imagino que um banco de dados onde haja uma tabela com os dados de cada modelo seria a melhor pratica neste caso.
entendeu?
Abaixo vai um exemplo de código com array para o que você precisa ( testa lá e vê se te ajuda) , se servir é só adaptar para o que você precisa:
import java.awt.EventQueue;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class veiculos extends JFrame {
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
veiculos frame = new veiculos();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public veiculos() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JButton btnNewButton = new JButton("carros");
btnNewButton.setBounds(10, 109, 89, 23);
contentPane.add(btnNewButton);
JButton btnNewButton_1 = new JButton("caminh\u00F5es");
btnNewButton_1.setBounds(10, 143, 89, 23);
contentPane.add(btnNewButton_1);
// CRIO O ARRAY COM AS MONTADORAS
ArrayList lista = new ArrayList();
lista.add("AUDI");
lista.add("VW");
lista.add("FIAT");
// POPULO OS ARRAYS ( um para cada montadora ) essa é a parte que me
// convenço que o banco será sua melhor opção
// audi
ArrayList listaMODELOS_AUDI = new ArrayList();
listaMODELOS_AUDI.add("A1");
listaMODELOS_AUDI.add("A2");
listaMODELOS_AUDI.add("A3");
// vw
ArrayList listaMODELOS_VW = new ArrayList();
listaMODELOS_VW.add("FUSCA");
listaMODELOS_VW.add("KOMBI");
listaMODELOS_VW.add("GOL");
// fiat
ArrayList listaMODELOS_FIAT = new ArrayList();
listaMODELOS_FIAT.add("PUNTO");
listaMODELOS_FIAT.add("UNO");
listaMODELOS_FIAT.add("MAREA");
// crio os jlist dos modelos
DefaultListModel modelos = new DefaultListModel();
JList listaModelos = new JList(modelos);
listaModelos.setBounds(266, 57, 110, 193);
contentPane.add(listaModelos);
// crio os jlist das montadoras
DefaultListModel montadoras = new DefaultListModel();
JList listaCArros = new JList(montadoras);
listaCArros.setBounds(134, 57, 110, 193);
listaCArros.setVisibleRowCount(10);
// ADICIONO OS AS MONTADORAS NO LIST VARRENDO O ARRAY E COLOCANDO CADA
// ITEM NA LISTA
for (int i = 0; i < lista.size(); i++) {
montadoras.addElement(lista.get(i));
}
// Adiciono um mouse listener para pegar o clic do mouse
listaCArros.addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent arg0) {
// limpa a lista pois a cada novo clic sua lista tem que ser
// desenhada novamente
modelos.clear();
// PEGO O NOME DA MONTADORA CLICADO
if (listaCArros.getSelectedValue().equals("AUDI")) {
// varro o array das montadoras e adiciono os nomes no list
for (int i = 0; i < listaMODELOS_AUDI.size(); i++) {
modelos.addElement(listaMODELOS_AUDI.get(i));
}
}
if (listaCArros.getSelectedValue().equals("VW")) {
// varro o array das montadoras e adiciono os nomes no list
for (int i = 0; i < listaMODELOS_VW.size(); i++) {
modelos.addElement(listaMODELOS_VW.get(i));
}
}
if (listaCArros.getSelectedValue().equals("FIAT")) {
// varro o array das montadoras e adiciono os nomes no list
for (int i = 0; i < listaMODELOS_FIAT.size(); i++) {
modelos.addElement(listaMODELOS_FIAT.get(i));
}
}
}
@Override
public void mousePressed(MouseEvent arg0) {
}
public void mouseExited(MouseEvent arg0) {
}
public void mouseEntered(MouseEvent arg0) {
}
public void mouseClicked(MouseEvent arg0) {
}
});
contentPane.add(listaCArros);
JLabel lblMontadoras = new JLabel("montadoras");
lblMontadoras.setBounds(134, 32, 110, 14);
contentPane.add(lblMontadoras);
JLabel lblModelos = new JLabel("modelos");
lblModelos.setBounds(266, 32, 110, 14);
contentPane.add(lblModelos);
}
}
Era isso mesmo que eu precisava, muito obrigado mesmo, você me ajudou muito mesmo!
Agora só vou adapta-lo.
Opa, bom saber que ajudou a resolver seu problema. se precisar de outro help onde eu possa ajudar estou a disposição.
abraço.
Ola, você poderia me ajudar a resolver mais um problema?
Eu já adicionei todas as montadoras e modelos e agora gostaria de abrir um jform ou uma pagina html dentro dentro de um jform, clicando em algum modelo de veiculo, para exibir manuais e dicas de manutenção sobre o veiculo.
opa. desculpe so vi isso agora. Ja resolveu? senão posta o código aí e fala mais do que voce precisa.
Ola, você poderia me ajudar a resolver mais um problema?
Eu já adicionei todas as montadoras e modelos e agora gostaria de abrir um jform ou uma pagina html dentro dentro de um jform, clicando em algum modelo de veiculo, para exibir manuais e dicas de manutenção sobre o veiculo.
Obrigado por sua Atenção!