Reputation: 43
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)));
}
}
Upvotes: 4
Views: 1081
Reputation: 347244
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.
Upvotes: 5
Reputation: 4715
Here is pseudo Code for you.
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class ChangeJlableByJComboBox extends JFrame {
private static final long serialVersionUID = 1L;
public ChangeJlableByJComboBox() {
super("TooltipInSwing");
setSize(400, 300);
getContentPane().setLayout(new FlowLayout());
final JLabel b1;
final JComboBox jb1 = new JComboBox(new String[] { " ", "one", "two",
"three" });
b1 = new JLabel("Default Lable");
getContentPane().add(b1);
getContentPane().add(jb1);
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// setting custom text to JLabel
if (jb1.getSelectedItem().toString().equals("one"))
b1.setText("Lable one ---");
else if (jb1.getSelectedItem().toString().equals("two"))
b1.setText("Lable two ---");
else if (jb1.getSelectedItem().toString().equals("three"))
b1.setText("Lable three ---");
else
b1.setText("----");
// or Compact version for setting JcomboBox selected item
// to JLabel text
// b1.setText(jb1.getSelectedItem().toString());
System.out.println(jb1.getSelectedItem().toString());
// you can also make use of following method
System.out.println(jb1.getSelectedIndex());
}
});
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setVisible(true);
}
public static void main(String args[]) {
new ChangeJlableByJComboBox();
}
}
I hope this will help you to resolve your issue.
Upvotes: 3