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

Java图形g2

古畅
2023-03-14

我正在尝试创建一个程序,询问用户他们想要显示哪个形状,然后根据该输入,它会询问形状的尺寸,然后在窗口中显示它。我现在正在研究第一个形状,它是正方形,但我似乎无法让它显示在窗口中。我在这里发布了我对正方形的类和我的主要方法

import java.util.Scanner;
import javax.swing.JComponent;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Frame;
import java.awt.Rectangle;

public class Square extends JComponent{

    private static int length; 

    public double getArea() {   
    return length * length;
    }
    public int getPerimeter() {
        return length * 4;
    }
    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D)g;
        Rectangle square = new Rectangle(100,100,length,length);
        g2.draw(square);


    }
}
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.util.Scanner;
import javax.swing.JFrame;


public class Main {

    static int input;
    static int length;

    public static void main(String[] args) {

        Scanner sc1 = new Scanner(System.in);
        while(true) {
            System.out.print("Which shape do you want?\n1 for square\n2 for restangle\n3 for triangle\n4 for circle\n5 to exit");
            input = sc1.nextInt();
            if(input == (5)) {
                break;
            }
            if(input == (1)) {


                System.out.print("Input the length:");
                length = sc1.nextInt();
                Square mySquare = new Square();
                mySquare.getPerimeter();





                JFrame frame = new JFrame();

                frame.setSize(300,400);
                frame.setTitle("ShapeViewer");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                frame.add(mySquare);
                frame.setVisible(true);

            }


        }
    }
}

我也试着放g2。画在主屏幕上,但它无法识别g2。我一直在为此出错。

共有2个答案

何松
2023-03-14

就我所见,广场。长度始终为零。顺便说一句,为什么是静态的?

荆城
2023-03-14

你需要换个班。你不是在为它设定长度。所以它默认为0,所以你看不到你的方块。也要使其非静态,因为每个方块都应该是不同的。

我添加了一个接受并设置长度的构造函数

public class Square extends JComponent{

        private int length; 

        public Square(int length) {
            this.length = length;
        }
        public double getArea() {   
        return length * length;
        }
        public int getPerimeter() {
            return length * 4;
        }
        public void paintComponent(Graphics g) {
            Graphics2D g2 = (Graphics2D)g;
            Rectangle square = new Rectangle(100,100,length,length);
            g2.draw(square);


        }
    }
 类似资料:
  • 我正在制作一个java swing游戏。我听说swing组件不使用主动呈现(您只能重写paint方法),因此,我一直在使用BufferStrategy和Canvas。现在,我已经从JComponent和JPanel中发现了方法。如果我们可以在swing组件中进行主动呈现,为什么游戏教程仍然重写和?

  • 问题内容: Java图形或图表库上有一个较早的线程,在该线程中发现JFreeChart相当不错, 但是 ,正如其常见问题解答所述,它并不意味着实时渲染。 谁能推荐一个支持实时渲染的类似库?只是一些基本的xy渲染-例如,从数据采集系统获取电压信号并对其进行绘制(x轴上的时间,y轴上的电压)。 问题答案: FAQ实际所说的是JFreeChart不支持硬实时图表,这意味着当新数据到达时或之后的确定时间间

  • 问题内容: 下学期,我们有一个团队中的Java应用程序模块。该模块的要求是制作游戏。在圣诞节假期里,我一直在做一些练习,但是我想不出绘制图形的最佳方法。 我正在使用Java Graphics2D对象在屏幕上绘制形状,并每秒调用30次,但这非常闪烁。有没有更好的方法来绘制Java中的高性能2D图形? 问题答案: 您想要做的是创建一个带有BufferStrategy的canvas组件并对其进行渲染,下

  • 问题内容: 有没有人对任何适用于Graph算法的Java库有丰富的经验。我已经尝试过JGraph并发现还可以,而且Google中有很多不同的产品。人们实际上在生产代码中成功使用了哪些东西,或者会推荐吗? 需要澄清的是,我不是在寻找可生成图形/图表的库,而是在寻找一种可用于图形算法的库,例如最小生成树,Kruskal算法的节点,边等。理想情况下,它具有一些良好的算法/数据一个漂亮的Java OO A

  • 图形概述 理解图形系统是深入游戏开发的关键。本章详细介绍 Unity 的图形特性,例如光照和渲染。

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 改善这个问题 我想用Java绘制图形(节点和边)。但是,由于我不知道该怎么做,因此在开始之前我想寻求一些建议。 我应该怎么做? 使用Graphics2D包,对吗? 节点的标签怎么样?我应该使用诸如drawString之类的东西并手动处理所有“