Valor de um JFrame para um JPainel

4 respostas
V

Olá PessoALL! estou com o seguite problema: tenho um JFrame e nele esta inserido um JComboBox com várias opções que serão tratadas em um JPanel (tenho um if no JPanel que irá mostrar uma imagem de acordo com o selecionado no JCombBox no JFrame) como procedo? o que devo fazer no JFrame para que ele possar ser entendido no JPanel e vice-versa?

[]´s
:thumbup:

4 Respostas

dsfextreme

vnsnunes:
Olá PessoALL! estou com o seguite problema: tenho um JFrame e nele esta inserido um JComboBox com várias opções que serão tratadas em um JPanel (tenho um if no JPanel que irá mostrar uma imagem de acordo com o selecionado no JCombBox no JFrame) como procedo? o que devo fazer no JFrame para que ele possar ser entendido no JPanel e vice-versa?

[]´s
:thumbup:

Vc deve adicionar um listener,já fez isso ?

dsfextreme

Tem um exemplo no seu diretório java ae ,tenta dar uma olhada nele.Tem o que vc quer ,modificar as figurar à partir de um JComboBox.
Sempre indico este diretório pois nele tem muito exemplo legal , e com código fonte,justamente para consultarmos.

Este é o caminho
C:\Arquivos de programas\Java\jdk1.5.0_06\demo\plugin\jfc\SwingSet2\SwingSet2.html

Troque o diretório para o da sua máquina ae…flw?
Depois coloca aqui se funcionou !
Um abraço.

dsfextreme

Segue um exemplo para te ajudar

[IMG]http://Serv1.imagehigh.com/files/ih000001/10137_ComboBoxDemo.png[/IMG]

/* From http://java.sun.com/docs/books/tutorial/index.html */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/*
 * ComboBoxDemo.java is a 1.4 application that uses these additional files:
 *   images/Bird.gif
 *   images/Cat.gif
 *   images/Dog.gif
 *   images/Rabbit.gif
 *   images/Pig.gif
 */
public class ComboBoxDemo extends JPanel
                          implements ActionListener {
    JLabel picture;

    public ComboBoxDemo() {
        super(new BorderLayout());

        String[] petStrings = { "Bird", "Cat", "Dog", "Rabbit", "Pig" };

        //Create the combo box, select the item at index 4.
        //Indices start at 0, so 4 specifies the pig.
        JComboBox petList = new JComboBox(petStrings);
        petList.setSelectedIndex(4);
        petList.addActionListener(this);

        //Set up the picture.
        picture = new JLabel();
        picture.setFont(picture.getFont().deriveFont(Font.ITALIC));
        picture.setHorizontalAlignment(JLabel.CENTER);
        updateLabel(petStrings[petList.getSelectedIndex()]);
        picture.setBorder(BorderFactory.createEmptyBorder(10,0,0,0));

        //The preferred size is hard-coded to be the width of the
        //widest image and the height of the tallest image + the border.
        //A real program would compute this.
        picture.setPreferredSize(new Dimension(177, 122+10));

        //Lay out the demo.
        add(petList, BorderLayout.PAGE_START);
        add(picture, BorderLayout.PAGE_END);
        setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
    }

    /** Listens to the combo box. */
    public void actionPerformed(ActionEvent e) {
        JComboBox cb = (JComboBox)e.getSource();
        String petName = (String)cb.getSelectedItem();
        updateLabel(petName);
    }

    protected void updateLabel(String name) {
        ImageIcon icon = createImageIcon("images/" + name + ".gif");
        picture.setIcon(icon);
        picture.setToolTipText("A drawing of a " + name.toLowerCase());
        if (icon != null) {
            picture.setText(null);
        } else {
            picture.setText("Image not found");
        }
    }

    /** Returns an ImageIcon, or null if the path was invalid. */
    protected static ImageIcon createImageIcon(String path) {
        java.net.URL imgURL = ComboBoxDemo.class.getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }

    /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() {
        //Make sure we have nice window decorations.
        JFrame.setDefaultLookAndFeelDecorated(true);

        //Create and set up the window.
        JFrame frame = new JFrame("ComboBoxDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Create and set up the content pane.
        JComponent newContentPane = new ComboBoxDemo();
        newContentPane.setOpaque(true); //content panes must be opaque
        frame.setContentPane(newContentPane);

        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() {
                createAndShowGUI();
            }
        });
    }
}
V

Kara, eu peguei esse exemplo como base tb, na verdade a modificação é nesse exemplo, veja o código:

//JFrame

import javax.swing.<em>;

import javax.swing.border.</em>;

import java.awt.event.<em>;

import java.awt.</em>;

public class TesteComboBox extends JFrame{

public TesteComboBox() {
    initComponents();
}

private void initComponents() {
    listanimais = new javax.swing.JComboBox();
    painelAnimais = new javax.swing.JPanel();

    getContentPane().setLayout(null);

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    listanimais.setModel(new javax.swing.DefaultComboBoxModel(new String[] {  "Escolha um Animal","Gato", "Papagaio", "Porco", "Cachorro", "Coelho" }));
    getContentPane().add(listanimais);
    listanimais.setBounds(150, 20, 140, 22);
      
    //Instancio um novo JPanel
    [color=red]PainelComboBox painelAnimais = new PainelComboBox();//aponto pro JPanel q criei[/color]
    painelAnimais.setBorder(new javax.swing.border.LineBorder(new Color(0, 0, 0)));
    getContentPane().add(painelAnimais);
    painelAnimais.setBounds(30, 70, 330, 200);

    pack();
}

   public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new TesteComboBox().setVisible(true);
        }
    });
}

// Variables declaration - do not modify
private javax.swing.JComboBox listanimais;
private javax.swing.JPanel painelAnimais;
// End of variables declaration

}

//JPainel
public class PainelComboBox extends javax.swing.JPanel {

public PainelComboBox() {
  [color=red] //aki q tenho q fazer ele entender q o listaAnimais é do JFrame[/color]
    if (listaAnimais.getSelectedIndex() == 1) { //Seleciono Gato
           animais = ("images/Gato.jpg");//aki ele taka a img do gato
                }
    else 
        if (listaAnimais.getSelectedIndex() == 3) { //Seleciono Papagaio
        animais = ("images/Papagaio.jpg");//aki ele taka a img do papagaio
                }
    else 
        if (listaAnimais.getSelectedIndex() == 4) { //Seleciono Porco
           animais = ("images/Porco.jpg");//aki ele taka a img do porco
                }
    else 
        if (listaAnimais.getSelectedIndex() == 5) { //Seleciono Cachorro
        animais = ("images/Cachorro.jpg");//aki ele taka a img do cachorro
                }
    else 
        if (listaAnimais.getSelectedIndex() == 6) { //Seleciono Coelho
        animais = ("images/Coelho.jpg");//aki ele taka a img do coelho
                }
}

    
// Variables declaration - do not modify 
private javax.swing.JLabel animais;
// End of variables declaration

}

Criado 7 de maio de 2006
Ultima resposta 7 de mai. de 2006
Respostas 4
Participantes 2