Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 4 of 4
  1. #1
    New Coder
    Join Date
    Jun 2011
    Posts
    36
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Help with school coding

    I have this code.
    Code:
    /**
     * @(#)chapter9a.java
     *
     * chapter9a Applet application
     *
     * @author 
     * @version 1.00 2011/11/4
     */
     
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    
    public class chapter9a extends java.applet.Applet implements AdjustmentListener,ItemListener{
    	
    	Graphics screen;
    	Scrollbar width, height, red, blue, green;
    	Label widthL, heightL, blueL, redL, greenL,outlineL;
    	int widthI, heightI, blueI, redI, greenI;
    	Checkbox outline;
    	String yon;
    	Color clr;
    	
    	public void init() {
    		
    		setLayout(null);
    		
    		width=new Scrollbar(0,55,10,10,110);
    		height=new Scrollbar(0,55,10,10,110);
    		red=new Scrollbar(0,255,10,0,255);
    		blue=new Scrollbar(0,255,10,0,255);
    		green=new Scrollbar(0,0,10,0,255);
    		widthL=new Label("Width");
    		heightL=new Label("Height");
    		redL=new Label("Red");
    		blueL=new Label("Blue");
    		greenL=new Label("Green");
    		outline=new Checkbox("Outline",null,false);
    		outlineL=new Label("Outline");
    		
    		width.addAdjustmentListener(this);
    		height.addAdjustmentListener(this);
    		red.addAdjustmentListener(this);
    		blue.addAdjustmentListener(this);
    		green.addAdjustmentListener(this);
    		outline.addItemListener(this);
    		
    		width.setBounds(100,10,150,20);
    		height.setBounds(100,40,150,20);
    		red.setBounds(320,10,200,20);
    		blue.setBounds(320,40,200,20);
    		green.setBounds(320,70,200,20);
    		widthL.setBounds(10,10,100,20);
    		heightL.setBounds(10,40,100,20);
    		redL.setBounds(260,10,50,20);
    		blueL.setBounds(260,40,50,20);
    		greenL.setBounds(260,70,50,20);
    		outline.setBounds(530,10,10,10);
    		outlineL.setBounds(530,30,50,20);
    		
    		add(width);
    		add(height);
    		add(red);
    		add(blue);
    		add(green);
    		add(widthL);
    		add(heightL);
    		add(redL);
    		add(blueL);
    		add(greenL);
    		add(outline);
    		add(outlineL);
    		
    	}
    	
    	public void adjustmentValueChanged(AdjustmentEvent event) {
    		
    		widthI=width.getValue();
    		heightI=height.getValue();
    		redI=red.getValue();
    		blueI=blue.getValue();
    		greenI=green.getValue();
    		repaint();
    		
    	}
    	
    	public void itemStateChanged(ItemEvent event) {
    		
    		if (outline.getState()==true) {
    			yon="yes";
    		}
    		else if (outline.getState()==false) {
    			yon="no";
    		}
    		
    	}
    	
    	public void paint(Graphics screen) {
    		//circle
    		widthI=width.getValue();
    		heightI=height.getValue();
    		redI=red.getValue();
    		blueI=blue.getValue();
    		greenI=green.getValue();
    		
    		//outline
    		outline.getState();
    		if (outline.getState()==true) {
    			yon="yes";
    		}
    		else if (outline.getState()==false) {
    			yon="no";
    		}
    		
    		if (yon=="yes") {
    			screen.drawOval(199,199,(widthI+1),(heightI+1));
    		}
    		else {
    			
    		}
    		
    		//circle continued
    		Color clr=new Color(redI,greenI,blueI);
    		screen.setColor(clr);
    		screen.fillOval(200,200,widthI,heightI);
    		
    	}
    }
    and i want it so when u press the checkbox it automatically puts the outline around the circle without having to press anything else. right now i would have to click the checkbox and then press one of the scrollbars to make the outline appear. Any help would be great. Thanks.

  • #2
    God Emperor Fou-Lu's Avatar
    Join Date
    Sep 2002
    Location
    Saskatoon, Saskatchewan
    Posts
    16,978
    Thanks
    4
    Thanked 2,659 Times in 2,628 Posts
    Have you tried to repaint from the itemStateChanged? You should be working with the event as well, not the outline. Somewhat irrelevant though since you are relying on paint to perform the work, so you may as well call a simple repaint.
    Also, this won't work: if (yon=="yes"). yon is a string, you cannot compare strings this way. That should be comparing to .equals, but I don't really see a need for this variable at all since you can just detect true/false states otherwise.

  • #3
    New Coder
    Join Date
    Jun 2011
    Posts
    36
    Thanks
    1
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by Fou-Lu View Post
    Have you tried to repaint from the itemStateChanged? You should be working with the event as well, not the outline. Somewhat irrelevant though since you are relying on paint to perform the work, so you may as well call a simple repaint.
    Also, this won't work: if (yon=="yes"). yon is a string, you cannot compare strings this way. That should be comparing to .equals, but I don't really see a need for this variable at all since you can just detect true/false states otherwise.
    that actually did work. So i dont know why u dont think it would. i updated the code so it could do more things

    Code:
    /**
     * @(#)circle.java
     *
     * circle Applet application
     *
     * @author 
     * @version 1.00 2011/11/18
     */
     
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    
    public class circle extends java.applet.Applet implements AdjustmentListener,ItemListener,ActionListener {
    	
    	Graphics screen;
    	Scrollbar width, height, red, green, blue, xcord, ycord;
    	Label widthL, heightL, redL, greenL, blueL, outlineL, xcordL, ycordL;
    	int widthI, heightI, redI, greenI, blueI, xcordI, ycordI;
    	Checkbox outline;
    	Button dance;
    	Color clr;
    	String yon,danceS;
    	
    	public void init() {
    		
    		setLayout(null);
    		
    		width=new Scrollbar(0,105,1,10,210);
    		height=new Scrollbar(0,105,1,10,210);
    		red=new Scrollbar(0,255,1,0,255);
    		green=new Scrollbar(0,0,1,0,255);
    		blue=new Scrollbar(0,255,1,0,255);
    		widthL=new Label("Width");
    		heightL=new Label("Height");
    		redL=new Label("Red");
    		greenL=new Label("Green");
    		blueL=new Label("Blue");
    		outline=new Checkbox("",null,false);
    		outlineL=new Label("Outline");
    		xcord=new Scrollbar(0,0,1,200,400);
    		ycord=new Scrollbar(0,0,1,200,400);
    		xcordL=new Label("X");
    		ycordL=new Label("Y");
    		dance=new Button("Dance!");
    			
    		heightL.setBounds(10,10,50,20);
    		widthL.setBounds(10,40,50,20);
    		height.setBounds(70,10,200,20);
    		width.setBounds(70,40,200,20);
    		redL.setBounds(280,10,50,20);
    		greenL.setBounds(280,40,50,20);
    		blueL.setBounds(280,70,50,20);
    		red.setBounds(340,10,200,20);
    		green.setBounds(340,40,200,20);
    		blue.setBounds(340,70,200,20);
    		outline.setBounds(610,10,20,20);
    		outlineL.setBounds(550,10,50,20);
    		xcordL.setBounds(10,70,50,20);
    		ycordL.setBounds(10,100,50,20);
    		xcord.setBounds(70,70,200,20);
    		ycord.setBounds(70,100,200,20);
    		dance.setBounds(550,40,50,20);
    		
    		height.addAdjustmentListener(this);
    		width.addAdjustmentListener(this);
    		red.addAdjustmentListener(this);
    		green.addAdjustmentListener(this);
    		blue.addAdjustmentListener(this);
    		outline.addItemListener(this);
    		xcord.addAdjustmentListener(this);
    		ycord.addAdjustmentListener(this);
    		dance.addActionListener(this);
    		
    		add(height);
    		add(width);
    		add(heightL);
    		add(widthL);
    		add(red);
    		add(green);
    		add(blue);
    		add(redL);
    		add(greenL);
    		add(blueL);
    		add(outline);
    		add(outlineL);
    		add(xcord);
    		add(ycord);
    		add(xcordL);
    		add(ycordL);
    		add(dance);
    		
    	}
    	
    	public void adjustmentValueChanged(AdjustmentEvent event) {
    		
    		height.getValue();
    		width.getValue();
    		red.getValue();
    		green.getValue();
    		blue.getValue();
    		xcord.getValue();
    		ycord.getValue();
    		heightI=height.getValue();
    		widthI=width.getValue();
    		redI=red.getValue();
    		greenI=green.getValue();
    		blueI=blue.getValue();
    		xcordI=xcord.getValue();
    		ycordI=ycord.getValue();
    		repaint();
    		
    	}
    
    	public void itemStateChanged(ItemEvent event) {
    		
    		if (outline.getState()==true) {
    			yon="yes";
    		}
    		else if (outline.getState()==false) {
    			yon="no";
    		}
    		repaint();
    		
    	}
    	
    	public void actionPerformed(ActionEvent event) {
    		
    		danceS="dance";
    	
    	}
    
    	public void paint(Graphics screen) {
    		
    		height.getValue();
    		width.getValue();
    		red.getValue();
    		green.getValue();
    		blue.getValue();
    		xcord.getValue();
    		ycord.getValue();
    		heightI=height.getValue();
    		widthI=width.getValue();
    		redI=red.getValue();
    		greenI=green.getValue();
    		blueI=blue.getValue();
    		xcordI=xcord.getValue();
    		ycordI=ycord.getValue();
    			
    		clr=new Color(redI,greenI,blueI);
    		screen.setColor(clr);
    		screen.fillOval(xcordI,ycordI,(widthI+1),(heightI+1));
    		
    		screen.setColor(Color.black);
    		if (yon=="yes") {
    			screen.drawOval(xcordI,ycordI,widthI,heightI);
    		}
    		else {
    			
    		}
    	
    		if(danceS=="dance") {
    		
    		xcord.setValue(200);
    		ycord.setValue(200);
    		for (int dummy=1;dummy<10;dummy=dummy+1){
    		}
    		xcord.setValue(400);
    		ycord.setValue(200);
    		for (int dummy=1;dummy<10;dummy=dummy+1){
    		}
    		xcord.setValue(400);
    		ycord.setValue(400);
    		for (int dummy=1;dummy<10;dummy=dummy+1){
    		}
    		xcord.setValue(200);
    		ycord.setValue(400);
    		for (int dummy=1;dummy<10;dummy=dummy+1){
    		}
    		xcord.setValue(200);
    		ycord.setValue(200);
    		danceS="nodance";
    		
    		}
    		else {
    			
    		}
    		
    	}
    }
    it works like this. but the dance funtion won't work. If anyone can tell why that would be amazing. Thanks

  • #4
    God Emperor Fou-Lu's Avatar
    Join Date
    Sep 2002
    Location
    Saskatoon, Saskatchewan
    Posts
    16,978
    Thanks
    4
    Thanked 2,659 Times in 2,628 Posts
    Yes sorry I should be more specific.
    == will not work consistently for a string. That equality works because Java uses an optimization technique for its immutable objects. This will not work consistently if you are wanting to compare a value. For an example:
    PHP Code:
    String s1 = new String("yes");
    String s2 = new String("yes"); // This forces a new object
    if (s1 == s2)
    {
        
    System.out.println("s1 and s2 share the same MEMORY");
    }
    else if (
    s1.equals(s2))
    {
        
    System.out.println("s1 and s2 share the same VALUE");
    }
    if (
    s1 == "yes")
    {
        
    System.out.println("s1 shares the same memory as constant yes"); // no, this will never show
    }
    else if (
    s1.equals("yes"))
    {
         
    System.out.println("s1 has the value of yes"); // yes this is fine

    The above will state that they share the same value, not the same memory (so == does not equal for the two objects).

    As for your second part, that you have a new thread for, so I'll get into that there.


  •  

    Tags for this Thread

    Posting Permissions

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