当前位置: 首页 > 知识库问答 >
问题:

Java,GUI JPanel,JFrame,paintComponent,Graphics

糜单弓
2023-03-14

关于您要更改的注释添加公共显示(图形g)

[链接]http://www3.canyons.edu/faculty/biblej/project6.html

1.)Project6类必须扩展JFrame类2.)Project6构造函数必须设置GUI窗口3.)一个新的抽象方法:public void display(Graphics g);应该添加到基和派生类4.)一个自定义JPanel必须使用paintComponent方法5.)新的display(Graphics g)方法必须在GUI窗口上绘制形状并从paintComponent方法中的循环调用

public class Project6 extends JFrame { 

//project6 constructor without parameters to set up new JFrame
public Project6() {
add(new NewPanel());
}
class NewPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);

//所以我需要在这里添加图形g吗?还是没有?

for(int i = 0; i < thearray.length && thearray[i] != null; i++) {
thearray[i].display(**Graphics g**); 
}}}

public static void main (String [] args) {
JFrame frame = new JFrame();
frame.setSize(800, 700);                           
frame.setTitle("Shapes");
frame.setLocationRelativeTo(null);                 //Center Frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

这里有一个类的例子,我是不是这样加到最后?我是否需要在形状父类中添加一个公共抽象虚空显示(图形g)?它如何调用project6类?

public class Rectangle extends Shape {
private int width;
private int height;

public Rectangle() {
    setWidth(0);
    setHeight(0);
    setXPos(0);
    setYPos(0);}

public Rectangle(int xPos, int yPos, int height, int width) {
    setWidth(xPos);
    setHeight(yPos);
    setXPos(height);
    setYPos(width);}

public int getWidth() {
    return width;}

public void setWidth(int width) {
    this.width = width;}

public int getHeight() {
    return height;}

public void setHeight(int height) {
    this.height = height;}

@Override
public void display() {
    System.out.println("Rectangle: (" + getXPos() + ", " + getYPos() + ") " + " Height:  " + height + " Width: " + width);}

@Override
public void display(Graphics g) {
  g.drawRect(getXPos(), getYPos(), width, height); }

共有1个答案

柯乐童
2023-03-14

一种新的抽象方法:公共虚空显示(图形g);应添加到基础和派生类中

您没有正确执行此步骤,因为我注意到您调用了theArray[I].display();display的目的是要有一个参数。

如果您正确创建了display方法,那么您将得到可以使用的Graphics对象,例如:

class Line extends Shape {
    int x1, y1, x2, y2;

    @Override
    public void display(Graphics g) {
        g.drawLine(x1, y1, x2, y2);
    }
}
 类似资料:
  • 问题内容: 该程序的目的是单击以创建圆,ballball类扩展了test1,当test1检测到鼠标单击时,即创建了ballball对象。但是paint / paintComponent方法永远不会执行。在我的程序结构中,是否可以将圆圈绘制到超类JPanel? 问题答案: 不是,它没有可以覆盖的方法。相反,您可以扩展a 并将其添加到框架中。

  • 在试图制作一个非常简单的子弹地狱游戏来学习java时,我遇到了一个障碍: repaint()没有调用油漆组件()。 这是整个程序,目前只需将我每秒创建50次的图像绘制到JFrame上的JPanel上。 在使用断点和println方法进行了一些调试之后,我可以确认正在读取正确的图像,gameTimerAction中的计时器每秒被调用50次,并且repaint()根本没有调用paintComponen

  • 主要内容:1 Java JFrame的介绍,2 Java JFrame的内部类,3 Java JFrame的字段,4 Java JFrame的构造方法,5 Java JFrame的方法,6 Java JFrame的案例1 Java JFrame的介绍 javax.swing.JFrame类是一种继承java.awt.Frame类的容器。JFrame的工作原理类似于主窗口,其中添加了标签,按钮,文本字段等组件以创建GUI。 与Frame不同,JFrame可以选择使用setDefaultCloseO

  • 问题内容: 我试图绘制一个简单的矩形,但我认为paintComponent方法没有被调用。这是带有main方法的类的代码: 和带有paintComponent()的类 这是什么问题,我不知道… 问题答案: 虽然已经提供的答案可能会导致出现矩形,但这种方法并非最佳。此示例旨在显示一种更好的方法。阅读代码中的注释以获取详细信息。 请注意,应该在EDT上启动Swing / AWT GUI。这留给读者练习

  • 问题内容: From the original question (below), I am now offering a bounty for the following: An based solution for rounded corners. Please demonstrate with a . Corners must be completely transparent. Must

  • 问题内容: 我想将JApplet转换为JFrame。我在互联网上找到了一个单词搜索游戏的代码。我想在一个类的演示中使用此代码。但我不想在applet中使用它。我要在此处粘贴的代码大约有7,000个字符。我尝试使用JApplet并扩展JFrame,然后将所有用于初始化的代码放入构造函数(零自变量构造函数)中。这导致大约十个我无法解决的错误。我想制作一个单词搜索游戏,并且找到了一个很好的例子,但是我无