Last minute attempts to find what I am doing wrong here. I am a beginning Java Programmer, as you will see, and need help understanding why my paint method will not draw onto the panel. So far all I have tried to accomplish is to get the circle object to display when I select the circle radio button. Please advise...
import javax.swing.JFrame;
public class ConcentricShapesViewer
{
public static void main(String[] args)
{
JFrame frame = new ConcentricShapes ();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(500,700);
}
}
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import javax.swing.JComponent;
import javax.swing.SwingConstants;
/**
* This class uses a recursive method to draw
* concentric shapes.
*/
public class ConcentricShapes extends JFrame
{
public ConcentricShapes()
{
class ChoiceListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
repaint();
}
}
ChoiceListener listener = new ChoiceListener();
createControlPanel();
}
public void createControlPanel()
{
JPanel aButton = createRadioButton();
JPanel aComboBox = createComboBox();
JPanel aCount = createCountOfLoops();
JPanel drawing = createDrawing();
JPanel controlPanel = new JPanel();
JPanel controlPanelb = new JPanel();
controlPanel.setLayout(new GridLayout(4,1));
controlPanel.add(aButton);
controlPanel.add(aComboBox);
controlPanel.add(aCount);
controlPanelb.add(drawing);
add(controlPanel, BorderLayout.CENTER);
add(controlPanelb, BorderLayout.SOUTH);
}
public JPanel createComboBox()
{
JComboBox shapeColorCombo = new JComboBox();
shapeColorCombo.addItem("Red");
shapeColorCombo.addItem("Blue");
shapeColorCombo.addItem("Green");
shapeColorCombo.addItem("Black");
shapeColorCombo.addActionListener(listener);
colorString = (String)shapeColorCombo.getSelectedItem();
JPanel panel = new JPanel();
panel.add(shapeColorCombo);
panel.setBorder(new TitledBorder(new EtchedBorder(), "Pick a color"));
return panel;
}
public JPanel createRadioButton()
{
squareButton = new JRadioButton("Square", false);
squareButton.addActionListener(listener);
circleButton = new JRadioButton("Circle", false);
circleButton.addActionListener(listener);
ButtonGroup aGroup = new ButtonGroup();
aGroup.add(squareButton);
aGroup.add(circleButton);
JPanel buttonPanel = new JPanel();
buttonPanel.add(squareButton);
buttonPanel.add(circleButton);
buttonPanel.setBorder(new TitledBorder(new EtchedBorder(), "Pick a shape"));
return buttonPanel;
}
public JPanel createCountOfLoops()
{
JComboBox createCountOfLoops = new JComboBox();
createCountOfLoops.addItem("1");
createCountOfLoops.addItem("2");
createCountOfLoops.addItem("3");
createCountOfLoops.addItem("4");
createCountOfLoops.addItem("5");
createCountOfLoops.addItem("6");
createCountOfLoops.addItem("7");
createCountOfLoops.addItem("8");
createCountOfLoops.addItem("9");
createCountOfLoops.addItem("10");
createCountOfLoops.addItem("11");
createCountOfLoops.addItem("12");
createCountOfLoops.addItem("13");
createCountOfLoops.addItem("14");
createCountOfLoops.addItem("15");
createCountOfLoops.addItem("16");
createCountOfLoops.addItem("17");
createCountOfLoops.addItem("18");
createCountOfLoops.addItem("19");
createCountOfLoops.addItem("20");
createCountOfLoops.addActionListener(listener);
loops = (String)createCountOfLoops.getSelectedItem();
countLoops = Integer.parseInt(loops);
JPanel panel = new JPanel();
panel.add(createCountOfLoops);
panel.setBorder(new TitledBorder(new EtchedBorder(), "How many??"));
return panel;
}
public JPanel createDrawing()
{
paint(g);
JPanel panel = new JPanel();
panel.setBorder(new TitledBorder(new EtchedBorder()));
return panel;
}
public void paint(Graphics g)
{
if (circleButton.isSelected())
{
int n=10;
int topXY = 5;
int size=300;
if (n > 0)
{
g.drawOval(topXY, topXY-1, size+15, size-30);
}
}
else if (squareButton.isSelected())
{
int n=10;
int topXY = 5;
int size=300;
if (n > 0)
{
g.drawRect(topXY, topXY-1, size+15, size-30);
}
}
}
private String colorString;
private String loops;
private int countLoops;
private ActionListener listener;
private JRadioButton squareButton;
private JRadioButton circleButton;
private JComboBox shapeColorCombo;
private JLabel sampleField;
private JPanel contentPane;
private Graphics g;
}