Mike Eghtebas
asked on
Code debug
Using FigurePanel, TestFigurePanel is supposed to draw some shapes on a panel.
Question: Could you please help me to debug it?
Thank you.
Question: Could you please help me to debug it?
Thank you.
import javax.swing.*;
import java.awt.*;
public class TestFigurePanel extends JFrame{
public TestFigurePanel(){
setLayout(new GridLayout(2,3,5,5));
add(new FigurePanel(FigurePanel.LINE));
add(new FigurePanel(FigurePanel.RECTANGLE));
add(new FigurePanel(FigurePanel.ROUND_RECTANGLE));
add(new FigurePanel(FigurePanel.OVAL));
add(new FigurePanel(FigurePanel.RECTANGLE,true));
add(new FigurePanel(FigurePanel.ROUND_RECTANGLE,true));
}
public static void main(String[] args){
TestFigurePanel frame=new TestFigurePanel();
frame.setSize(400,200);
frame.setTitle("TestFigurePanel");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
import java.awt.*;
import javax.swing.*;
public class FigurePanel extends JPanel {
public static final int LINE=1;
public static final int RECTANGLE=2;
public static final int ROUND_RECTANGLE=3;
public static final int OVAL=4;
private int type=1;
private boolean filled = false;
public FigurePanel(){
}
public FigurePanel(int type){
this.type=type;
}
public FigurePanel(int type, boolean filled){
this.type=type;
this.filled=filled;
}
protected void paintComponent(Graphics g){
super.printComponent(g);
int width=getWidth();
int height=getHeight();
switch(type){
case LINE:
g.setColor(Color.BLACK);
g.drawLine(10, 10, width -10, height-10);
g.drawLine(width-10, 10, 10, height-10);
break;
case RECTANGLE:
g.setColor(Color.BLUE);
if(filled)
g.fillRect((int)(0.1*width), (int)(0.1*height),
(int)(0.8*width), (int)(0.8*height));
else
g.drawRect((int)(0.1*width),(int)(0.1*height),
(int)(0.8*width),(int)(0.8*height));
break;
case ROUND_RECTANGLE:
g.setColor(Color.RED);
if(filled)
g.fillRoundRect((int)(0.1*width), (int)(0.1*height),
(int)(0.8*width), (int)(0.8*height), 20, 20);
else
g.drawRoundRect((int)(0.1*width),(int)(0.1*height),
(int)(0.8*width),(int)(0.8*height),20,20);
break;
case OVAL:
g.setColor(Color.BLACK);
if(filled)
g.fillOval((int)(0.1*width), (int)(0.1*height),
(int)(0.8*width), (int)(0.8*height));
else
g.drawOval((int)(0.1*width),(int)(0.1*height),
(int)(0.8*width),(int)(0.8*height));
}
}
public void setType(int type){
this.type=type;
repaint();
}
public int getType(){
return type;
}
public void setFilled(boolean filled){
this.filled=filled;
repaint();
}
public boolean isfilled() {
return filled;
}
public Dimension getPreferredSize() {
return new Dimension(80,80);
}
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thank you
You are always welcome.
add all elements to ContentPane
like here:
Open in new window