Note that there are some explanatory texts on larger screens.

plurals
  1. POgetHeight() and getWidth() return 0 for drawing semicircles
    primarykey
    data
    text
    <p>I'm trying to make a gui application which displays a rainbow when run by the user. For whatever reason the semicircles won't show up in the window. I made a debug method and it shows the x and y to both be 0. Could someone tell me what's wrong? </p> <pre><code>import java.awt.Color; import java.awt.Graphics; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JPanel; public class Rainbow extends JPanel { // Declare skyColor: static Color skyColor = Color.CYAN; public Rainbow() { setBackground(skyColor); } // Draws the rainbow. public void paintComponent(Graphics g) { super.paintComponent(g); int width = getWidth(); int height = getHeight(); // Declare and initialize local int variables xCenter, yCenter // that represent the center of the rainbow rings: int xCenter = (1/2)*width; int yCenter = (3/4)*height; // Declare and initialize the radius of the large semicircle: int smallRadius = height/4; int largeRadius = width/4; int mediumRadius = (int) Math.sqrt(smallRadius * largeRadius); g.setColor(Color.RED); g.fillArc(xCenter - largeRadius/2,yCenter - largeRadius/2 + largeRadius/4 -height/4,largeRadius,largeRadius,0,180); // Draw the large semicircle: // Declare and initialize the radii of the small and medium // semicircles and draw them: g.setColor(Color.GREEN); g.fillArc(largeRadius+mediumRadius/2, yCenter-(largeRadius+mediumRadius)/2, mediumRadius, mediumRadius, 0, 180); g.setColor(Color.MAGENTA); g.fillArc(largeRadius+smallRadius/2, yCenter-(largeRadius+smallRadius)/2, smallRadius, smallRadius, 0, 180); // Calculate the radius of the innermost (sky-color) semicircle debug(xCenter,yCenter,smallRadius,largeRadius,mediumRadius); // Draw the sky-color semicircle: // ________________________________________________ } public static void debug(int x,int y,int r1,int r2,int r3) { System.out.println("xCenter is " + x + "."); System.out.println("yCenter is " + y + "."); System.out.println("smallRadius is " + r1 + "."); System.out.println("largeRadius is " + r2 + "."); System.out.println("mediumRadius is " + r3 + "."); } public static void main(String[] args) { JFrame w = new JFrame("Rainbow"); w.setBounds(300, 300, 300, 200); w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = w.getContentPane(); c.add(new Rainbow()); w.setVisible(true); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload