Solved

How would I set the height and width of my Arc?

Posted on 2006-11-17
4
261 Views
Last Modified: 2012-05-05
I understand how I sized the Ovel,, >> int width = getSize().width - 100;, I have tried all different combonations to get getSize() to talk to Arc as well, but no go.


class Circle extends JPanel {
     public void paintComponent(Graphics g) {
            Graphics cir = (Graphics) g;
            cir.setColor(Color.red);
            Graphics cira = (Graphics) g;
            
              //cir.fillOval(Color.blue)
             //cir.setColor(Color.blue);
    FlowLayout bar = new FlowLayout();
          int x = 55;
          int y = 55;
               int xa = 55;
          int ya = 55;
             
          int width = getSize().width - 100;
          int height = getSize().height - 100;
             
               int diameter = Math.min(width, height);
            //cira.fillArc(xa, ya, width, height);
            
          //int diameter = Math.min(width, height);
         cir.fillOval(x, y,diameter,diameter);
             
              cira.setColor(Color.blue);
               cira.fillArc (100, 110, 50, 75, 45, 215);
             
0
Comment
Question by:charliebaby
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
4 Comments
 
LVL 10

Expert Comment

by:ADSLMark
ID: 17966767
Look at this page:

http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics.html
(more info at: http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics.html#fillArc(int,%20int,%20int,%20int,%20int,%20int) )

It tells you how to call fillArc on a Graphics object:

fillArc(int x, int y, int width, int height, int startAngle, int arcAngle);

You have to supply 2 extra parameters for the visible part of the arc (since an arc is a part of a oval)

Mark
0
 

Author Comment

by:charliebaby
ID: 17967229
I tried the new entries also in different combos, (lower case, uppercase),but no go. I am probably makeing it more complicated then it is, Filling the arc is no problem ,setting the size has me confused

class Circle extends JPanel {
     public void paintComponent(Graphics g) {
            Graphics cir = (Graphics) g;
            cir.setColor(Color.red);
            Graphics cira = (Graphics) g;
            
              //cir.fillOval(Color.blue)
             //cir.setColor(Color.blue);
    FlowLayout bar = new FlowLayout();
          int x = 55;
          int y = 55;
               int xa = 55;
          int ya = 55;
             
          int width = getSize().width - 100;
          int height = getSize().height - 100;
             
              int Arcwidth=getSize().Arcwidth - 100;
           int Archeight=getSize().Archeight - 100;
               
               int diameter = Math.min(Arcwidth,Archeight);
               int diameter = Math.min(width, height);
            //cira.fillArc(xa, ya, width, height);
            
          //int diameter = Math.min(width, height);
         cir.fillOval(x, y,diameter,diameter);
             
              cira.setColor(Color.blue);
               cira.fillArc (100, 110, 50, 75, 45, 215);
             
     }
}
}
0
 
LVL 10

Accepted Solution

by:
ADSLMark earned 500 total points
ID: 17967522
Ok, you are messing things up now. I have no idea what you are trying to achieve, but here comes some corrected code (with comments):

//Class declaration
class Circle extends JPanel {
     
     //Paint method
     //g is a variable pointing to a graphics object
     //this is a variable pointing to the current object
     public void paintComponent(Graphics g) {
          //set offset position
          int x = 55;
          int y = 55;

          //get size of the panel and substract 100
          int width = this.getWidth() - 100;
          int height = this.getHeight() - 100;
             
          //take smallest size as diameter
          int diameter = Math.min(width, height);

          //paint red oval
          g.setColor(Color.RED);
          g.fillOval(x, y, diameter, diameter);

          //paint blue arc          
          g.setColor(Color.BLUE);
          g.fillArc (x, y, diameter, diameter, 45, 215);
     }
}
}

This should work (did not test, though). You might have to comment the painting of one of the two shapes to make the other visible, since they overlap.

Good luck.
Mark
0
 

Author Comment

by:charliebaby
ID: 17967793
Mark thank you that helped a lot,  it works now, thank you again, Charlie.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.

690 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question