我正在尝试创建一个程序,询问用户他们想要显示的形状,然后根据输入,它将询问形状的大小,然后在窗口中显示。我现在正在做第一个形状,那就是正方形,但我似乎不能让它出现在窗户上。我在这里张贴我在广场上的课程和我的主要方法。
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,我一直在找错误。
发布于 2018-02-20 06:25:53
你需要改变你的正方形课程。你没有开始它的长度。因此,在默认情况下,它是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);
}
}发布于 2018-02-20 06:32:45
据我所见,Square.length总是为零。顺便说一句,它为什么是静态的?
https://stackoverflow.com/questions/48878893
复制相似问题