有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    • 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