Help with simple frame, and graphics in Java
        Posted  
        
            by Crystal
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Crystal
        
        
        
        Published on 2010-05-20T06:56:37Z
        Indexed on 
            2010/05/20
            7:00 UTC
        
        
        Read the original article
        Hit count: 233
        
For hw, I'm trying to create a "CustomButton" that has a frame and in that frame, I draw two triangles, and a square over it. It's supposed to give the user the effect of a button press once it is depressed. So for starters, I am trying to set up the beginning graphics, drawing two triangles, and a square. The problem I have is although I set my frame to 200, 200, and the triangles I have drawn I think to the correct ends of my frame size, when I run the program, I have to extend my window to make the whole artwork, my "CustomButton," viewable. Is that normal? Thanks.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CustomButton
{
    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                CustomButtonFrame frame = new CustomButtonFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}
class CustomButtonFrame extends JFrame
{
    // constructor for CustomButtonFrame
    public CustomButtonFrame()
    {
        setTitle("Custom Button");
        setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
        CustomButtonSetup buttonSetup = new CustomButtonSetup();
        this.add(buttonSetup);
    }
    private static final int DEFAULT_WIDTH = 200;
    private static final int DEFAULT_HEIGHT = 200;
}
class CustomButtonSetup extends JComponent
{
    public void paintComponent(Graphics g)
    {
        Graphics2D g2 = (Graphics2D) g;
        // first triangle coords
        int x[] = new int[TRIANGLE_SIDES];
        int y[] = new int[TRIANGLE_SIDES];
        x[0] = 0;   y[0] = 0;
        x[1] = 200; y[1] = 0;
        x[2] = 0;   y[2] = 200;
        Polygon firstTriangle = new Polygon(x, y, TRIANGLE_SIDES);
        // second triangle coords
        x[0] = 0;   y[0] = 200;     
        x[1] = 200; y[1] = 200;
        x[2] = 200; y[2] = 0;
        Polygon secondTriangle = new Polygon(x, y, TRIANGLE_SIDES);
        g2.drawPolygon(firstTriangle);
        g2.setColor(Color.WHITE);
        g2.fillPolygon(firstTriangle);
        g2.drawPolygon(secondTriangle);
        g2.setColor(Color.GRAY);
        g2.fillPolygon(secondTriangle);
        // draw rectangle 10 pixels off border
        g2.drawRect(10, 10, 180, 180);
    }
    public static final int TRIANGLE_SIDES = 3;
}
© Stack Overflow or respective owner