+ Reply to Thread
Page 1 of 2
1 2 LastLast
Results 1 to 10 of 13

Thread: Color Mixer and JSlider

  1. #1
    Code Warrior Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n's Avatar
    Join Date
    May 2008
    Location
    4chan.org/g/
    Age
    20
    Posts
    3,836
    Blog Entries
    4

    Color Mixer and JSlider

    Well, why not have fun with colors?

    So let me introduce you guys to my color mixer and Slider tutorial !

    Packages
    Code:
    import javax.swing.*;
    import static javax.swing.JOptionPane.*;
    import javax.swing.event.*;
    import java.awt.*;
    import java.awt.event.*;
    Note by using a static import I can easily just type in instances instead of referring to the class then use the instance method...

    The class
    Code:
    public class JMyColor extends JFrame implements ActionListener,ChangeListener {
    Inheriting everything from the JFrame class and implementing instructions from the ActionListener and ChangeListener interface
    Variables and instances...
    Code:
    JFrame JF = new JFrame();
    	private JLabel mix = new JLabel("Mix Colors",JLabel.CENTER);
    	private JTextField X = new JTextField("0");
    	private JTextField Y = new JTextField("0");
    	private JTextField Z = new JTextField("0");
    	private JPanel ColorPanel = new JPanel();
    	private JSlider Alpha = new JSlider();
    	private JSlider Beta = new JSlider();
    	private JSlider Zeta = new JSlider();
    	private JButton MixColor = new JButton("Mix");
    	private JMenuBar JMB = new JMenuBar();
    	private JMenu JM = new JMenu("Actions");
    	private JMenuItem quit = new JMenuItem("Close");
    	private JLabel CopyRight = new JLabel("Copyright - Turk4n",JLabel.CENTER);
    Everything in here will be used. The text fields will present the numbers you can add to change the colors. Remember we are using RGB color scheme(DEC=INTEGERS) LOL Plus the sliders will change the colors
    Constructor GUI
    Code:
    public JMyColor() {
    		setLayout(null);
    		add(JMB);
    		JMB.add(JM);
    		JM.add(quit);
    		add(MixColor);
    		add(CopyRight);
    		add(ColorPanel);
    		add(mix); add(X); add(Y); add(Z);
    		add(Alpha); add(Beta); add(Zeta);
    		
    		CopyRight.setBounds(0,215,100,20);
    		CopyRight.setFont(new Font("Sanserif",Font.ITALIC,10));
    		JMB.setBounds(0,0,300,15);
    		X.setBounds(10,30,60,20);
    		Y.setBounds(10,60,60,20);
    		Z.setBounds(10,85,60,20);
    		Alpha.setBounds(200,35,90,20);
    		Alpha.setValue(0);
    		Alpha.setMinimum(0);
    		Alpha.setMaximum(255);
    		Beta.setBounds(200,60,90,20);
    		Beta.setValue(0);
    		Beta.setMinimum(0);
    		Beta.setMaximum(255); 
    		Zeta.setBounds(200,80,90,20);
    		Zeta.setValue(0);
    		Zeta.setMinimum(0);
    		Zeta.setMaximum(255);
    		mix.setBounds(100,25,80,40);
    		MixColor.setBounds(110,60,60,20);
    		ColorPanel.setBounds(100,130,80,80);
    		MixColor.addActionListener(this);
    		quit.addActionListener(this);
    		Alpha.addChangeListener(this);
    		Zeta.addChangeListener(this);
    		Beta.addChangeListener(this);
    		
    		setSize(305,270);
    		setVisible(true);
                    setTitle("Color Mixer");
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		show();
    	}
    As more or less, we are adding each item without following a Layout. This not recommended for users who likes to have something prebuild and easy to use. However if you want it to be positionable in your way you have to follow like I did... Our sliders will add a change as they are moved. That's why we are using Change Listener instead of the Action Listener that we are using for our close operation and mixer !
    Sliders Listener
    Code:
    public void stateChanged(ChangeEvent e) {
    		Color c = new Color(Alpha.getValue(),Beta.getValue(),Zeta.getValue());
    		
    		String NewAlpha = String.valueOf(Alpha.getValue());
    		String NewBeta = String.valueOf(Beta.getValue());
    		String NewZeta = String.valueOf(Zeta.getValue());
    		
    		X.setText(NewAlpha);
    		Y.setText(NewBeta);
    		Z.setText(NewZeta);
    		ColorPanel.setBackground(c);
    	}
    As we have sliders that are move able. they also generate an integer value from 0-255
    So basically we set the values the sliders are on to the ColorPanel and to the textfields :>
    Action Listener
    Code:
    public void actionPerformed(ActionEvent e) {
    		
    			if(e.getSource()==MixColor) {
    				
    				String x = X.getText();
    				String y = Y.getText();
    				String z = Z.getText();
    				
    				int NewX = 0;
    				int NewY = 0;
    				int NewZ = 0;
    				
    				try
    				{
    					NewX = Integer.parseInt(x);
    					NewY = Integer.parseInt(y);
    					NewZ = Integer.parseInt(z);
    					Alpha.setValue(NewX);
    					Beta.setValue(NewY);
    					Zeta.setValue(NewZ);
    					
    					Color c = new Color(NewX, NewY, NewZ);
    						ColorPanel.setBackground(c);
    				}catch(NumberFormatException NFE) {
    					showMessageDialog(JF,"Does not compute !","String Error/One or two fields incorrect",JOptionPane.ERROR_MESSAGE);
    				}
    				catch(Exception OtherException){
    					showMessageDialog(JF,"Does not compute !","Out of range 0-255",JOptionPane.ERROR_MESSAGE);
    				}
    			}
    			else if(e.getSource()==quit) {
    				System.exit(0);
    			}
    	}
    Now the action listener will read in from our textfields. However the fields are strings and we can't use strings when integers are needed to display the color... We parse it and represent them as numbers from 0-255. Now. When the user is doing something wrong, like posting something out of boundary or just plain stupid and typing in color names...It will run some error messages for their own safety...
    The main
    Code:
    public static void main(String[] arg) {
    		new JMyColor();
    	}
    }
    Here is the end and we are going to start the application and see the power of sliders And of course the colors !

    Output
    Color Mixer and JSlider-colormixer.png
    Cheers !

    Hatsune Miku ~❤❤❤
    初音ミク。~❤❤❤

  2. #2
    Administrator Jordan is a name known to all Jordan is a name known to all Jordan is a name known to all Jordan is a name known to all Jordan is a name known to all Jordan is a name known to all Jordan's Avatar
    Join Date
    Nov 2005
    Location
    Hendersonville, NC
    Posts
    24,556
    Blog Entries
    97

    Re: Color Mixer and JSlider

    Very cool and useful tutorial! +rep

  3. #3
    Code Warrior Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n's Avatar
    Join Date
    May 2008
    Location
    4chan.org/g/
    Age
    20
    Posts
    3,836
    Blog Entries
    4

    Re: Color Mixer and JSlider

    Quote Originally Posted by Jordan View Post
    Very cool and useful tutorial! +rep
    Why thank you

    Hatsune Miku ~❤❤❤
    初音ミク。~❤❤❤

  4. #4
    Super Moderator WingedPanther has much to be proud of WingedPanther has much to be proud of WingedPanther has much to be proud of WingedPanther has much to be proud of WingedPanther has much to be proud of WingedPanther has much to be proud of WingedPanther has much to be proud of WingedPanther has much to be proud of WingedPanther has much to be proud of WingedPanther's Avatar
    Join Date
    Jul 2006
    Age
    36
    Posts
    11,673
    Blog Entries
    57

    Re: Color Mixer and JSlider

    Next stop, CMYK mixers +rep
    CodeCall Blog | CodeCall Wiki | Shareware
    Programming is a branch of mathematics.
    My CodeCall Blog | My Personal Blog

  5. #5
    Code Warrior Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n's Avatar
    Join Date
    May 2008
    Location
    4chan.org/g/
    Age
    20
    Posts
    3,836
    Blog Entries
    4

    Re: Color Mixer and JSlider

    Quote Originally Posted by WingedPanther View Post
    Next stop, CMYK mixers +rep
    Haha, yeah I could present a small update with a CMYK mixer

    Hatsune Miku ~❤❤❤
    初音ミク。~❤❤❤

  6. #6
    Code Slinger chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5's Avatar
    Join Date
    Mar 2008
    Posts
    7,023
    Blog Entries
    1

    Re: Color Mixer and JSlider

    Wow, that is cool. +rep

    Edit: regarding the use of static imports, is it good to do that? I think it gets a bit confusing as you don't know where the method is coming from anymore?

  7. #7
    Code Warrior Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n's Avatar
    Join Date
    May 2008
    Location
    4chan.org/g/
    Age
    20
    Posts
    3,836
    Blog Entries
    4

    Re: Color Mixer and JSlider

    Quote Originally Posted by chili5 View Post
    Wow, that is cool. +rep

    Edit: regarding the use of static imports, is it good to do that? I think it gets a bit confusing as you don't know where the method is coming from anymore?
    Thanks
    I like to type less when using instances
    Of course it's a programmers taste of choices right?
    I mean I don't like to type.
    Code:
    JOptionPane.showMessageDialog(null,"LoL");
    However I find this really cool and simple
    Code:
    showMessageDialog(null,"LoL");
    More or less I can say, it's all bout the feeling :>

    Hatsune Miku ~❤❤❤
    初音ミク。~❤❤❤

  8. #8
    Code Slinger chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5's Avatar
    Join Date
    Mar 2008
    Posts
    7,023
    Blog Entries
    1

    Re: Color Mixer and JSlider

    Yea, it all comes down to choice I guess.

    The problem with using absolute position with setBounds is it doesn't let you resize the form and maintain a good look. With the layout it lets you keep a good layout all the time.

    In your constructor you use the show method.

    This method is deprecated as of JDK 1.5 and you should be using Window.setVisible(boolean bVisible) instead.

    So instead of:

    Code:
    show();
    You should be using:

    Code:
    setVisible(true);

  9. #9
    Code Warrior Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n has much to be proud of Turk4n's Avatar
    Join Date
    May 2008
    Location
    4chan.org/g/
    Age
    20
    Posts
    3,836
    Blog Entries
    4

    Re: Color Mixer and JSlider

    Quote Originally Posted by chili5 View Post
    Yea, it all comes down to choice I guess.

    The problem with using absolute position with setBounds is it doesn't let you resize the form and maintain a good look. With the layout it lets you keep a good layout all the time.

    In your constructor you use the show method.

    This method is deprecated as of JDK 1.5 and you should be using Window.setVisible(boolean bVisible) instead.

    So instead of:

    Code:
    show();
    You should be using:

    Code:
    setVisible(true);
    I have often done both...LOL
    Code:
    setVisible(true);
    setTitle("Color Mixer");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    show();

    Hatsune Miku ~❤❤❤
    初音ミク。~❤❤❤

  10. #10
    Code Slinger chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5 has a reputation beyond repute chili5's Avatar
    Join Date
    Mar 2008
    Posts
    7,023
    Blog Entries
    1

    Re: Color Mixer and JSlider

    Oh shoot, I didn't notice that. At least it doesn't show your form twice. What I'm saying is you shouldn't even be using show at all.

+ Reply to Thread
Page 1 of 2
1 2 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Bookmarks

Bookmarks

     
        Algorithms and Data Structures

        Java tutorials

        Algorithms Forum

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts