import javax.swing.*; import java.awt.*; import java.awt.event.*; class MyRectangle { private int width; private int height; private int x; private int y; private Color color; private JFrame frame; public MyRectangle( ) { this( 40, 20, 100, 100, Color.BLUE, 200, 200, "My Rect", 0, 0, null ); //needs to do something about null JFrame arg... } public MyRectangle( int w, int h, int xArg, int yArg, Color colorArg, int fWidth, int fHeight, String fName, int fLocX, int fLocY, JFrame frameArg ) { /* frame = new JFrame( fName ); frame.setSize( fWidth, fHeight ); frame.setLocation( fLocX, fLocY ); frame.setVisible(true); */ frame = frameArg; //JFrame it's attached to setWidth( w ); setHeight( h ); setX( xArg ); setY( yArg ); setColor( colorArg ); } public void paint( ) { Graphics g = frame.getGraphics( ); g.setColor(color); g.fillRect(x, y, width, height); } public void setWidth(int w) { width = w; } public void setHeight(int h) { height = h; } public void setX(int valx) { x = valx; } public void setY(int valy) { y = valy; } public void setColor(Color c) { color = c; } } public class MyRectangleTest extends JApplet { MyRectangle rect; JTextField rectWidthField; JTextField rectHeightField; JTextField rectXField; JTextField rectYField; JTextField rectColorField; JTextField frameSizeXField; JTextField frameSizeYField; JTextField framePosXField; JTextField framePosYField; JTextField frameNameField; public void init(){ Container container = getContentPane(); container.setLayout( new GridLayout( 11, 2 ) ); JLabel rectWidthLabel = new JLabel( "Rectangle width" ); container.add( rectWidthLabel ); rectWidthField = new JTextField( "10" ); container.add( rectWidthField ); JLabel rectHeightLabel = new JLabel( "Rectangle height" ); container.add( rectHeightLabel ); rectHeightField = new JTextField( "10" ); container.add( rectHeightField ); JLabel rectXLabel = new JLabel( "Rectangle position X" ); container.add( rectXLabel ); rectXField = new JTextField( "0" ); container.add( rectXField ); JLabel rectYLabel = new JLabel( "Rectangle position Y" ); container.add( rectYLabel ); rectYField = new JTextField( "0" ); container.add( rectYField ); JLabel rectColorLabel = new JLabel( "Rectangle Color" ); container.add( rectColorLabel ); rectColorField = new JTextField( "" ); container.add( rectColorField ); JLabel frameSizeXLabel = new JLabel( "Frame size X" ); container.add( frameSizeXLabel ); frameSizeXField = new JTextField( "100" ); container.add( frameSizeXField ); JLabel frameSizeYLabel = new JLabel( "Frame size Y" ); container.add( frameSizeYLabel ); frameSizeYField = new JTextField( "100" ); container.add( frameSizeYField ); JLabel framePosXLabel = new JLabel( "Frame position X" ); container.add( framePosXLabel ); framePosXField = new JTextField( "0" ); container.add( framePosXField ); JLabel framePosYLabel = new JLabel( "Frame position Y" ); container.add( framePosYLabel ); framePosYField = new JTextField( "0" ); container.add( framePosYField ); JLabel frameNameLabel = new JLabel( "Frame name" ); container.add( frameNameLabel ); frameNameField = new JTextField( "" ); container.add( frameNameField ); JButton goButton = new JButton( "Apply" ); container.add( goButton ); goButton.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent event ) { int x, y, w, h, posX, posY, sizeX, sizeY; String color, name; try{ w = Integer.parseInt( rectWidthField.getText() ); h = Integer.parseInt( rectHeightField.getText() ); x = Integer.parseInt( rectXField.getText() ); y = Integer.parseInt( rectXField.getText() ); sizeX = Integer.parseInt( frameSizeXField.getText() ); sizeY = Integer.parseInt( frameSizeYField.getText() ); posX = Integer.parseInt( framePosXField.getText() ); posY = Integer.parseInt( framePosYField.getText() ); name = frameNameField.getText(); } catch (NumberFormatException e) { JOptionPane.showMessageDialog( null, "Gack! Numbers dude!" ); return; } JFrame frame = new JFrame( name ); frame.setSize( sizeX, sizeY ); frame.setLocation( posX, posY ); frame.setVisible(true); rect = new MyRectangle( w, h, x, y, Color.RED, sizeX, sizeY, name, posX, posY, frame ); rect.paint(); } } ); /* MyRectangle r1 = new MyRectangle( ); r1.paint( ); MyRectangle r2 = new MyRectangle( 30, 60, 5, 10, Color.RED, 300, 300, "Another Rectangle", 400, 400 ); r2.paint( ); */ } }