/** * */ package com.github.cbpos1989.gui_tutorials; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * App that wil change the background and foreground colors depend on JSliders * and alter the font style with a JComboBox. * * @author Colm O'Sullivan * */ public class SliderAndComboBoxDemo { private Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); private int screenWidth = (int)screenSize.getWidth(); private int screenHeight = (int)screenSize.getHeight(); /** * @param args */ public static void main(String[] args) { SliderAndComboBoxDemo scd = new SliderAndComboBoxDemo(); scd.startProgram(); } private void startProgram() { JFrame window = new JFrame("Slider & ComboBox Demo"); ContentPanel content = new ContentPanel(); window.setContentPane(content); window.pack(); window.setLocation(screenWidth/2, screenHeight/2); window.setResizable(false); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setVisible(true); } class ContentPanel extends JPanel implements ActionListener, ChangeListener{ /** * */ private static final long serialVersionUID = 1L; private JLabel displayLabel; private JComboBox<String> fontStyleSelect; private JSlider bgColorSlider, fgColorSlider; public ContentPanel(){ //Color Sliders bgColorSlider = new JSlider(0,255,100); bgColorSlider.addChangeListener(this); fgColorSlider = new JSlider(0,255,100); fgColorSlider.addChangeListener(this); //Font Style ComboBox fontStyleSelect = new JComboBox<String>(); fontStyleSelect.addItem("Plain Font"); fontStyleSelect.addItem("Italic Font"); fontStyleSelect.addItem("Bold Font"); fontStyleSelect.addItem("Bold Italic Font"); fontStyleSelect.setSelectedIndex(2); fontStyleSelect.addActionListener(this); //Label for Sliders and ComboBox to affect displayLabel = new JLabel("Hello World!", JLabel.CENTER); displayLabel.setOpaque(true); displayLabel.setBackground(new Color(100,100,100)); displayLabel.setForeground(new Color(255,200,200)); displayLabel.setFont(new Font("Serif",Font.BOLD,30)); //Set Layout of Panel setLayout(new GridLayout(4,1)); add(displayLabel); add(bgColorSlider); add(fgColorSlider); add(fontStyleSelect); } @Override //Method to change color of the label, Shades of grey for bg and shades of red/white for fg public void stateChanged(ChangeEvent evt) { if (evt.getSource() == bgColorSlider) { int bgVal = bgColorSlider.getValue(); displayLabel.setBackground(new Color(bgVal,bgVal,bgVal)); } else { int fgVal = fgColorSlider.getValue(); displayLabel.setForeground(new Color(255,fgVal,fgVal)); } } @Override //Method to take changes from ComboBox to affect Label font style public void actionPerformed(ActionEvent evt) { switch(fontStyleSelect.getSelectedIndex()){ case 0: displayLabel.setFont(new Font("Serif", Font.PLAIN,30)); break; case 1: displayLabel.setFont(new Font("Serif", Font.ITALIC,30)); break; case 2: displayLabel.setFont(new Font("Serif", Font.BOLD,30)); break; case 3: displayLabel.setFont(new Font("Serif", Font.BOLD + Font.ITALIC,30)); break; } } } }