java创建在JFrame中绘制矩形和圆形的方法?
我被分配了这个问题,没有教我怎么做,我自己也弄不明白。我已经开始了,但是我不知道要添加什么方法
下面是一个程序的主要方法,它在给定的坐标下绘制一个圆和一个正方形。您的工作是编写其余的代码,但不能更改主要方法!!!您可以向主驱动程序类添加方法,但不能向下面的主方法添加任何内容
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 楼答案
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