import java.util.InputMismatchException;
import java.util.Scanner;
class Rectangle extends Shape
{
private double width,height;
Rectangle(double w,double h){
super();
width=w;
height=h;
}
@Override
public void draw() {
}
}
class MyClass
{
public static void main(String[] args)
{
try
{
Scanner c=new Scanner(System.in);
String st="";
System.out.println("enter the number of Shapes you want to add(0 will exit)");
byte s=c.nextByte();
if(s==0)
return;
Shape[] shapes=new Shape[s];
for(byte j=0;j<s;j++)
{
System.out.println("what kind of shapes do you want , r for Rectangle , c for Circle");
st=c.next();
if("c".equals(st))
{
System.out.println("enter the radius and then the Name please");
shapes[j]=new Circle(c.nextDouble());
shapes[j].setName(c.next());
break;
}
else if("r".equals(st))
{
System.out.println("enter the width and height and then the Name please");
shapes[j]=new Rectangle(c.nextDouble(),c.nextDouble());
shapes[j].setName(c.next());
break;
}
else
{
System.out.println("c or r please");
j--;
}
}
DrawShapes(shapes);
}
catch(InputMismatchException i)
{
System.out.println("a decimal number was expected , but text was found , so we will start from begining");
}
catch(Throwable e)
{
System.out.println(e.getMessage());
}
}
public static void DrawShapes(Shape[] shapes)
{
for(int i=0;i<shapes.length;i++)
shapes[i].draw();
}
}
shape类是一个抽象类,它包含getPerimeter,getArea和draw抽象方法.Rectangle类的draw方法应该在窗口中绘制矩形。
在单独的窗口上绘制矩形,同时保持我的应用程序为其他方法的控制台。
答案 0 :(得分:2)
建议:
protected void paintComponent(Graphics g)
方法,并在此方法中进行绘制。super.paintComponent(g)
。init()
add(myDrawingJPanel);
方法中将此绘图JPanel添加到您的applet中
关于:
是否可以在不扩展Applet类的情况下使用applet?
不,我不这么认为。如果要创建GUI并将其显示在JApplet或Applet中,则必须覆盖该类,特别是覆盖其init()
方法,并将GUI添加到该小程序中。
有关更具体的帮助,请考虑在问题中提供更多信息和代码。
修改强>
关于你的编辑:
这是一个控制台应用程序,我希望保持这样,但我也想在调用draw方法时绘制矩形,形状类不是必需的,它只是一个抽象类,没有实施方法。在夏天我想用一个小程序来绘制矩形,同时保持我的应用程序一个控制台(除了绘图)。任何帮助?
同样,如果你想绘制并显示它,你需要一个GUI,因此也可以创建和显示一个独立的GUI,如JFrame或JDialog,或者至少是一个JOptionPane中的JPanel。同样,不能且不应在任何此类中使用applet。期。我以前的建议仍然有效。