首页
学习
活动
专区
圈层
工具
发布

g2
EN

Stack Overflow用户
提问于 2018-02-20 06:08:25
回答 2查看 889关注 0票数 0

我正在尝试创建一个程序,询问用户他们想要显示的形状,然后根据输入,它将询问形状的大小,然后在窗口中显示。我现在正在做第一个形状,那就是正方形,但我似乎不能让它出现在窗户上。我在这里张贴我在广场上的课程和我的主要方法。

代码语言:javascript
复制
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);


    }
}
代码语言:javascript
复制
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,我一直在找错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-20 06:25:53

你需要改变你的正方形课程。你没有开始它的长度。因此,在默认情况下,它是0,因此您无法看到您的平方。也要使它非静态,因为每个广场应该是不同的。

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

代码语言:javascript
复制
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);


        }
    }
票数 0
EN

Stack Overflow用户

发布于 2018-02-20 06:32:45

据我所见,Square.length总是为零。顺便说一句,它为什么是静态的?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48878893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档