Sou iniciante na linguagem Java e tenho uma dúvida que com certeza é simples para muito de vocês. Estou precisando adicionar a um JComboBox alguns nomes, (isso eu consegui fazer), porém o que eu desejo é incluir esse mesmo JComboBox (com os mesmos elementos) em frames diferentes, consegui incluir em um frame, agora o que faço para referenciar esse mesmo JComboBox no outro frame, e no momento que eu fizer qualquer alteração no JComboBox no frame de origem, o segundo frame, também possuidor do JComboBox sofrerá todas as alterações. O que devo fazer?
void jBCadastrar_actionPerformed(ActionEvent e) {
String titulo = jTFTitulo.getText();
String data = jTFData.getText();
if(titulo.equals("") || data.equals("")){
JOptionPane.showMessageDialog(null, "Preencha ambos os campos: Título e Data");
}
else {
if (cadastroCamp.encontrarCampeonato(titulo) == false){
jTFTitulo.setText("");
jTFData.setText("");
cadastroCamp.inserirCampeonato(titulo, data);
if (jCBTitulo.getItemCount() > 0){
jCBTitulo.removeAllItems();
}
for(int i=0; i < cadastroCamp.retornarTamanhoCampeonatos(); i++){
jCBTitulo.addItem(cadastroCamp.retornarTitulo(i));
//Aqui quero inserir no JCBCampeonato da classe FrameConfigurarJogo, os campeonatos que aqui forem cadastrados...
//(FrameConfigurarJogo) (JCBCampeonato.addItem(objFCJ.retornarTitulo(i)));???????????????????????
}
}
else{
jTFTitulo.setText("");
jTFData.setText("");
JOptionPane.showMessageDialog(null,"Campeonato já existe no cadastro.");
}
}
}
sou novo em JAVA também… tentei fazer aqui e não consegui… :?
o que eu consegui foi criar um JComboBox para cada frame e relacionar os valores de ambos.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class DuasFrames {
private JFrame frame1, frame2;
private JComboBox comboFrame1, comboFrame2;
private String[] conteudoCombos = {"1", "2", "3", "4", "5"};
private HandleItemListener listener;
public DuasFrames(){
listener = new HandleItemListener();
frame1 = new JFrame("Frame1");
frame2 = new JFrame("Frame2");
comboFrame1 = new JComboBox(conteudoCombos);
comboFrame2 = new JComboBox(conteudoCombos);
comboFrame1.addItemListener(listener);
comboFrame2.addItemListener(listener);
frame1.getContentPane().add(comboFrame1);
frame2.getContentPane().add(comboFrame2);
frame1.getContentPane().setLayout(new FlowLayout());
frame2.getContentPane().setLayout(new FlowLayout());
frame1.setSize(200, 100);
frame1.show();
frame2.setSize(200, 100);
frame2.show();
}
public class HandleItemListener implements ItemListener {
public void itemStateChanged(ItemEvent itemEvent) {
if (itemEvent.getSource() == comboFrame1) {
comboFrame2.setSelectedIndex(comboFrame1.getSelectedIndex());
}
else
comboFrame1.setSelectedIndex(comboFrame2.getSelectedIndex());
}
}
public static void main(String[] args) {
DuasFrames duasFrames = new DuasFrames();
}
}
Oi pessoal n se pode adicionar um componente a dois conteiners visuais oq se pode fazer é criar dois combos diferentes e referenciar os valores dos mesmos como ele falou
Usando esse método para ele pegar o modelo JComboBox jCBCampeonato = new JComboBox(fcc.jCBTitulo.getModel()), ele pega todos os objetos que uma vez eu inserir em outro frame onde está o JCBTitulo, e faz atualizações no frame onde se encontra o jCBCampeonato ???
Hmmm, não sei se estamos dizendo a mesma coisa, mas vou explicar o q acontece…
O Swing é baseado em MVC e todos os componentes possuem seu model, certo!!!
O que vc está fazendo se criar dessa forma é o seguinte: vc vai ter um modelo de dados para duas views, no caso os combobox…
Pense no seguinte, os dois estão olhando para a mesma estrutura. Sempre q vc inserir, por exemplo, assim cbox.addItem(“algo”), na verdade vc estará inserindo no model… Como os 2 combobox apontam para o mesmo modelo eles percebem a alteração… O mesmo ocorre quando se seleciona um item… se vc selecionar um item em um combobox a seleção é visivel nos dois…
Desculpe se não fui claro, não sou muito bom para explicar, hweheheheh