首页 > 解决方案 > 使用 Java JFrame 从用户输入中绘制形状

问题描述

我正在制作一个 Java 程序来询问用户的选择,然后绘制形状。但是当我运行我的代码时,它只显示一个 JFrame 白屏并且没有询问。我有2节课

//main.java

public class Main {

    public static void main (String [] args){
        new shapesss();


    }
}



//2nd class shapess.java

import java.awt.*;

import javax.swing.*;

import java.util.Scanner;

public class shapesss extends JFrame{

    shapesss(){

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(300,300);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }
    public void shapes (Graphics g){

        String choice;

        Scanner sc = new Scanner(System.in);
        System.out.println("Choices: a-Circle,b-Square");
        choice = sc.next();

        if (choice == "a"){

            Graphics2D g2d = (Graphics2D) g;

            g2d.drawOval(150, 150, 100, 100);

            }
        else if (choice == "b"){

            Graphics2D g2d = (Graphics2D) g;

            g2d.drawRect(150, 150, 100, 100);
        }
        }
}

标签: javaswingjframe

解决方案


  1. Java 类名应以大写字符开头。我见过的任何教科书或教程都遵循这个标准。以身作则。

  2. 使用 Swing 时不要使用扫描仪进行用户输入。而是使用JOptionPane.

  3. 不要使用“==”进行字符串比较。而是使用该equals(...)方法。

  4. 自定义绘画是通过覆盖 a 的paintComponent(...)方法来完成的JPanel

我建议您通过阅读Swing 教程开始学习 Swing 基础知识。本教程包含大量演示,将向您展示如何更好地构建类以遵循 Swing 指南。

您可以从以下部分开始:

  1. 定制绘画
  2. 如何制作对话框

您还可以查看自定义绘画方法以获取更多关于绘制形状的多个实例的示例。


推荐阅读