我被分配了这个问题而没有任何关于如何做的教导,我无法自己解决这个问题。我已经开始了,但我无法弄清楚要添加的方法。
以下是在给定坐标处绘制圆形和正方形的程序的主要方法。你的工作是编写其余代码,但主要方法不能改变!您可以将方法添加到主驱动程序类,但不能向下面的main方法添加任何内容。
public static void main (String[] args){
JFrame picture = new JFrame("Circle and Square");
picture.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
picture.getContentPane().add(new Drawing(200, 50,100, 150));
picture.pack();
picture.setVisible(true);
}
前两个数字是矩形开始的高度和宽度,后两个数字是圆圈开始的高度和宽度。
//The following is my failure attempt, so at least you know I tried
to figure something out.
import javax.swing.*;
import java.awt.*;
public class Drawing extends JFrame
{
int a, b, c, d;
public Drawing(int x, int y, int z, int yeah)
{
setSize(400, 400);
a = x;
b = y;
c = z;
d = yeah;
}
public void paint(Graphics g)
{
super.paint(g);
g.drawRect(a, b, c, d);
g.drawOval(c, d, a, b);
}
public getContentPane()
{
}
//Can't change following class:
public static void main (String[] args)
{
JFrame picture = new JFrame("Circle and Square");
picture.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
picture.getContentPane().add(new Drawing(200, 50, 100, 150));
picture.pack();
picture.setVisible(true);
}
}
我知道我必须创建一个称为面板的东西,但我甚至不知道如何做到这一点。我确信我可以对这里的任何代码进行逆向工程,这些代码告诉我如何解决我的任务。感谢。
答案 0 :(得分:0)
getContentPane
是JFrame
的一种方法,您不需要实施它。 Drawing
不需要从JFrame
延伸,它应该从JPanel
延伸。 setSize
它什么也不做。您需要覆盖getPreferredSize
并返回要使用的首选大小。 paint
,您应该使用paintComponent
,但是要点super.paint
。但是,当您将自定义绘画移至paintComponent
时,请改为呼叫super.paintComponent
。看看: - Creating a GUI With JFC/Swing - Performing Custom Painting - 2D Graphics
在您的文档或代码中记录main
方法错误,并应考虑Initial Threads