创建在JFrame中绘制矩形和圆的方法?

时间:2014-02-14 03:33:40

标签: java user-interface jframe

我被分配了这个问题而没有任何关于如何做的教导,我无法自己解决这个问题。我已经开始了,但我无法弄清楚要添加的方法。

以下是在给定坐标处绘制圆形和正方形的程序的主要方法。你的工作是编写其余代码,但主要方法不能改变!您可以将方法添加到主驱动程序类,但不能向下面的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);
}
}

我知道我必须创建一个称为面板的东西,但我甚至不知道如何做到这一点。我确信我可以对这里的任何代码进行逆向工程,这些代码告诉我如何解决我的任务。感谢。

1 个答案:

答案 0 :(得分:0)

  • getContentPaneJFrame的一种方法,您不需要实施它。
  • 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