Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make JLabel change Image when selection in JCombBox is made

I want to make my JLabel change every time the user chooses a selection in the JComboBox which gets its values from text files, please really need assistance....

import javax.swing.*;
import javax.swing.border.*;
import java.util.*;
import java.util.List;
import java.io.IOException;
import java.util.Scanner;
import java.io.*;
import java.awt.*;
import java.awt.event.*; 
import java.net.*;
import java.applet.*;

public class MusicOnWeb extends JApplet {
    JPanel P = new JPanel();

    JLabel Title = new JLabel();
        JLabel Logo = new JLabel();
            JLabel Category = new JLabel();
            JLabel List = new JLabel();
            JLabel Image = new JLabel();
            JSeparator jSeparator1 = new JSeparator();
            JSeparator jSeparator2 = new JSeparator();
            JSeparator jSeparator3 = new JSeparator();
            JSeparator jSeparator4 = new JSeparator();
            JSeparator jSeparator5 = new JSeparator();
            JButton Cc = new JButton();
            JButton Pp = new JButton();
            JButton Jz = new JButton();
            JButton Wn = new JButton();
            JButton Cart = new JButton();
            JComboBox Combo1 = new JComboBox();
            JComboBox Combo2 = new JComboBox();
            JComboBox Combo3 = new JComboBox();
            JComboBox Combo4 = new JComboBox();

        Font f = new Font("Lucida Calligraphy", Font.BOLD,25);

    final java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("MMMM dd yyyy GGG hh:mm:ss aaa"); 
    JLabel TimeLabel = new JLabel();

     ActionListener al = new ActionListener() {  
        public void actionPerformed(ActionEvent ae) {  
                    TimeLabel.setText(sdf.format(new java.util.Date())); 
            }  
        };

    String[] CB1 = new String[5];
    String[] CB2 = new String[5];
    String[] CB3 = new String[5];
    String[] CB4 = new String[5];

    String Music [ ] = {" Seal.jpg"};

    GridBagConstraints gbc;

public void init() {
        P.setBackground(new Color(102, 102, 102));
        P.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED, new java.awt.Color(255, 0, 51), new java.awt.Color(0, 153, 255), new java.awt.Color(0, 204, 153), new java.awt.Color(0, 204, 102)), javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 3)));
        P.setLayout(new GridBagLayout());

 try {
    File F= new File("Classics.txt");
    Scanner inFile = new Scanner(new FileReader(F)).useDelimiter("\\' '| \r");
    int i=0;
    while (inFile.hasNextLine()){
    CB1[i] = inFile.nextLine();
    i++;
}} catch (Exception e) {

    }

 try {
    File F= new File("Western.txt");
    Scanner inFile = new Scanner(new FileReader(F)).useDelimiter("\\' '| \r");
    int i=0;
    while (inFile.hasNextLine()){
    CB2[i] = inFile.nextLine();
    i++;
}}catch (Exception e)  {

    }

 try {
    File F= new File("Pop.txt");
    Scanner inFile = new Scanner(new FileReader(F)).useDelimiter("\\' '| \r");
    int i=0;
    while (inFile.hasNextLine()){
    CB4[i] = inFile.nextLine();
    i++;
}}catch (Exception e)  {

    }

 try {
    File F= new File("Jazz.txt");
    Scanner inFile = new Scanner(new FileReader(F)).useDelimiter("\\' '| \r");
    int i=0;
    while (inFile.hasNextLine()){
    CB3[i] = inFile.nextLine();
    i++;
}}catch (Exception e)  {

    }

        Title.setFont(new Font("Lucida Calligraphy", 1, 27)); 
        Title.setForeground(new Color(102, 102, 255));
        Title.setHorizontalAlignment(SwingConstants.CENTER);
        Title.setText("<HTML><center><b><u>MusicOnWeb</u></b><BR>An Online Music Store</HTML>");
        Title.setBorder(javax.swing.BorderFactory.createLineBorder(new Color(0, 0, 0)));
        gbc = new GridBagConstraints();
        gbc.gridx = 1;
        gbc.gridy = 0;
        gbc.gridwidth = 10;
        gbc.ipadx = 440;    // To resize components
        gbc.ipady = 25;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(26, 45, 0, 0);     // To move components
        P.add(Title, gbc);

        Logo.setIcon(new ImageIcon("C:\\Users\\Kwasi Addai\\Documents\\Java Work\\Project 1\\Logo.jpg"));
        Logo.setBorder(javax.swing.BorderFactory.createLineBorder(new Color(0, 0, 0)));
        gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.ipadx = -52;
        gbc.ipady = -23;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(26, 46, 0, 0);
        P.add(Logo, gbc);

        Category.setFont(new Font("Kristen ITC", 1, 24)); 
        Category.setHorizontalAlignment(SwingConstants.CENTER);
        Category.setText("Select the Category");
        Category.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED, new Color(102, 204, 255), java.awt.Color.red));
        gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 2;
        gbc.gridwidth = 3;
        gbc.ipadx = 30;
        gbc.ipady = 13;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(18, 46, 0, 0);
        P.add(Category, gbc);

        List.setFont(new Font("Britannic Bold", 0, 27)); 
        List.setHorizontalAlignment(SwingConstants.CENTER);
        List.setText("List of CD's Available");
        List.setBorder(javax.swing.BorderFactory.createEtchedBorder(java.awt.Color.black, java.awt.Color.white));
        gbc = new GridBagConstraints();
        gbc.gridx = 6;
        gbc.gridy = 2;
        gbc.gridwidth = 16;
        gbc.gridheight = 2;
        gbc.ipadx = 248;
        gbc.ipady = 22;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(23, 17, 0, 0);
        P.add(List, gbc);

        Image.setBorder(javax.swing.BorderFactory.createLineBorder(new Color(0, 0, 0), 3));
        Image.setMaximumSize(new Dimension(300, 300));
        Image.setMinimumSize(new Dimension(300, 300));
        gbc = new GridBagConstraints();
        gbc.gridx = 9;
        gbc.gridy = 5;
        gbc.gridwidth = 12;
        gbc.gridheight = 9;
        gbc.ipadx = -12;
        gbc.ipady = -12;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(8, 40, 0, 0);
        P.add(Image, gbc);

        TimeLabel.setText("timeLabel");
        TimeLabel.setFont(f);
        gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 16;
        gbc.gridwidth = 0;
        gbc.ipadx = 278;
        gbc.ipady = 33;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(15, 40, 0, 0);
        P.add(TimeLabel, gbc);
    new javax.swing.Timer(1000,al).start();  

        jSeparator1.setForeground(new Color(102, 102, 102));
        gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 1;
        gbc.gridwidth = 23;
        gbc.ipadx = 958;
        gbc.ipady = 3;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(20, 15, 0, 16);
        P.add(jSeparator1, gbc);

        jSeparator2.setBackground(new Color(0, 0, 0));
        gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 4;
        gbc.gridwidth = 4;
        gbc.ipadx = 340;
        gbc.ipady = 2;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(9, 15, 0, 0);
        P.add(jSeparator2, gbc);

        jSeparator3.setOrientation(SwingConstants.VERTICAL);
        gbc = new GridBagConstraints();
        gbc.gridx = 4;
        gbc.gridy = 2;
        gbc.gridheight = 13;
        gbc.ipadx = 11;
        gbc.ipady = 450;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(-2, 1, 0, 0);
        P.add(jSeparator3, gbc);

        jSeparator4.setBackground(new Color(0, 0, 0));
        gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 15;
        gbc.gridwidth = 23;
        gbc.ipadx = 958;
        gbc.ipady = 1;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(0, 15, 0, 16);
        P.add(jSeparator4, gbc);

        jSeparator5.setOrientation(SwingConstants.VERTICAL);
        gbc = new GridBagConstraints();
        gbc.gridx = 6;
        gbc.gridy = 16;
        gbc.gridheight = 3;
        gbc.ipadx = 11;
        gbc.ipady = 95;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(0, 180, 10, 0);
        P.add(jSeparator5, gbc);

        Cc.setFont(new Font("Tahoma", 3, 20)); 
        Cc.setForeground(new Color(0, 0, 102));
        Cc.setText("Classic");
        Cc.setBorder(new javax.swing.border.LineBorder(new Color(0, 0, 0), 4, true));
        gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 5;
        gbc.gridwidth = 2;
        gbc.gridheight = 2;
        gbc.ipadx = 161;
        gbc.ipady = 17;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(29, 65, 0, 0);
        Cc.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Combo1.setModel(new DefaultComboBoxModel(CB1));
                Combo2.setModel(new DefaultComboBoxModel(CB1));
                Combo3.setModel(new DefaultComboBoxModel(CB1));
                Combo4.setModel(new DefaultComboBoxModel(CB1));
                Combo1.setSelectedIndex(0);
                Combo2.setSelectedIndex(0);
                Combo3.setSelectedIndex(0);
                Combo4.setSelectedIndex(0);
            }
        });
         P.add(Cc, gbc);

        Pp.setFont(new Font("Tahoma", 3, 20)); 
        Pp.setForeground(new Color(0, 204, 204));
        Pp.setText("Pop");
        Pp.setBorder(new javax.swing.border.LineBorder(new Color(0, 0, 0), 4, true));
        gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 9;
        gbc.gridwidth = 2;
        gbc.ipadx = 191;
        gbc.ipady = 17;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(16, 65, 0, 0);
        Pp.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Combo1.setModel(new DefaultComboBoxModel(CB4));
                Combo2.setModel(new DefaultComboBoxModel(CB4));
                Combo3.setModel(new DefaultComboBoxModel(CB4));
                Combo4.setModel(new DefaultComboBoxModel(CB4));
                Combo1.setSelectedIndex(0);
                Combo2.setSelectedIndex(0);
                Combo3.setSelectedIndex(0);
                Combo4.setSelectedIndex(0);
            }
        });
        P.add(Pp, gbc);

        Jz.setFont(new Font("Tahoma", 3, 20)); 
        Jz.setForeground(new Color(0, 51, 153));
        Jz.setText("Jazz");
        Jz.setBorder(new javax.swing.border.LineBorder(new Color(0, 0, 0), 4, true));
        gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 11;
        gbc.gridwidth = 2;
        gbc.ipadx = 185;
        gbc.ipady = 17;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(12, 65, 0, 0);
          Jz.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Combo1.setModel(new DefaultComboBoxModel(CB3));
                Combo2.setModel(new DefaultComboBoxModel(CB3));
                Combo3.setModel(new DefaultComboBoxModel(CB3));
                Combo4.setModel(new DefaultComboBoxModel(CB3));
                Combo1.setSelectedIndex(0);
                Combo2.setSelectedIndex(0);
                Combo3.setSelectedIndex(0);
                Combo4.setSelectedIndex(0);
            }
        });
        P.add(Jz, gbc);

        Wn.setFont(new Font("Tahoma", 3, 20)); 
        Wn.setForeground(new Color(0, 102, 102));
        Wn.setText("Western");
        Wn.setBorder(new javax.swing.border.LineBorder(new Color(0, 0, 0), 4, true));
        gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 7;
        gbc.gridwidth = 2;
        gbc.ipadx = 145;
        gbc.ipady = 17;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(18, 65, 0, 0);
          Wn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Combo1.setModel(new DefaultComboBoxModel(CB2));
                Combo2.setModel(new DefaultComboBoxModel(CB2));
                Combo3.setModel(new DefaultComboBoxModel(CB2));
                Combo4.setModel(new DefaultComboBoxModel(CB2));
                Combo1.setSelectedIndex(0);
                Combo2.setSelectedIndex(0);
                Combo3.setSelectedIndex(0);
                Combo4.setSelectedIndex(0);
            }
        });

        P.add(Wn, gbc);

        Cart.setFont(new Font("Wide Latin", 1, 24)); 
        Cart.setText("Add to Cart");
        Cart.setBorder(new javax.swing.border.LineBorder(new Color(0, 0, 0), 5, true));
        gbc = new GridBagConstraints();
        gbc.gridx = 7;
        gbc.gridy = 16;
        gbc.gridwidth = 3;
        gbc.gridheight = 2;
        gbc.ipadx = 53;
        gbc.ipady = 14;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(26, 75, 0, 0);
    Cart.addActionListener(new ActionListener() {
              @Override
    public void actionPerformed(ActionEvent evt) {
    AppletContext ac = getAppletContext();
    URL url = getCodeBase(); // get url of this applet

    try {
    ac.showDocument(new URL(url+"Shopping_Cart.html"));
    } catch(MalformedURLException e) 
    {
        showStatus("URL not found");

        }
    }});
        P.add(Cart, gbc);

        Combo1.setBorder(javax.swing.BorderFactory.createMatteBorder(5, 5, 5, 5, new Color(0, 102, 204)));
        Combo1.setPrototypeDisplayValue("XXXXXXXXXXXX");
        gbc = new GridBagConstraints();
        gbc.gridx = 6;
        gbc.gridy = 5;
        gbc.gridwidth = 0;
        gbc.ipadx = 103;
        gbc.ipady = 28;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(23, 17, 0, 0);

        P.add(Combo1, gbc);

        Combo2.setBorder(javax.swing.BorderFactory.createMatteBorder(5, 5, 5, 5, new Color(0, 204, 204)));
        Combo2.setPrototypeDisplayValue("XXXXXXXXXXXX");
        gbc = new GridBagConstraints();
        gbc.gridx = 6;
        gbc.gridy = 7;
        gbc.gridwidth = 2;
        gbc.gridheight = 2;
        gbc.ipadx = 103;
        gbc.ipady = 28;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(16, 17, 0, 0);
        P.add(Combo2, gbc);

        Combo3.setBorder(javax.swing.BorderFactory.createMatteBorder(5, 5, 5, 5, new Color(0, 153, 153)));
        Combo3.setPrototypeDisplayValue("XXXXXXXXXXXX");
        gbc = new GridBagConstraints();
        gbc.gridx = 6;
        gbc.gridy = 9;
        gbc.gridwidth = 2;
        gbc.gridheight = 2;
        gbc.ipadx = 103;
        gbc.ipady = 28;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(18, 17, 0, 0);
        P.add(Combo3, gbc);

        Combo4.setBorder(javax.swing.BorderFactory.createMatteBorder(5, 5, 5, 5, new Color(0, 0, 204)));
        Combo4.setPrototypeDisplayValue("XXXXXXXXXXXX");
        gbc = new GridBagConstraints();
        gbc.gridx = 6;
        gbc.gridy = 11;
        gbc.gridwidth = 2;
        gbc.gridheight = 2;
        gbc.ipadx = 103;
        gbc.ipady = 28;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.insets = new Insets(18, 17, 0, 0);
        P.add(Combo4, gbc);

       GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(P, GroupLayout.PREFERRED_SIZE, 970, GroupLayout.PREFERRED_SIZE)
                .addContainerGap()));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(P, GroupLayout.PREFERRED_SIZE, 700, GroupLayout.PREFERRED_SIZE)
                .addGap(0, 68, Short.MAX_VALUE)));
      }
}
like image 819
Andrew Avatar asked Feb 17 '23 17:02

Andrew


1 Answers

The basic concept is simple.

I tend to prefer using ItemListener as it's more sensitive to different types of selection input then ActionListener

public class TestComboBox05 {

    public static void main(String[] args) {
        new TestComboBox05();
    }

    public TestComboBox05() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Test");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
            setLayout(new GridBagLayout());
            final JLabel lbl = new JLabel();
            add(lbl);
            JComboBox cb = new JComboBox();

            cb.addItemListener(new ItemListener() {
                @Override
                public void itemStateChanged(ItemEvent e) {
                    if (e.getStateChange() == ItemEvent.SELECTED) {
                        lbl.setText(e.getItem().toString());
                    }
                }
            });

            cb.addItem("1");
            cb.addItem("2");
            cb.addItem("3");
            cb.addItem("4");
            cb.addItem("5");
            add(cb);

        }

    }

}

Basically, when the itemStateChanged event is triggered, you need to find the selected item and change the icon of the label accordingly. This example shows changing the text, but the concept is the same.

like image 125
MadProgrammer Avatar answered Feb 20 '23 07:02

MadProgrammer