如何组合GUI类和扫描仪类?

atd*_*511 0 java swing java.util.scanner

我是java的新手,我正在尝试创建一个程序,首先要求用户输入一些数字,然后输出一个卷,区域等等.另外我想显示一个矩形,我不知道怎么做,因为我的程序运行正常,它不会显示矩形.我能做什么?

package testchap3;

import java.util.*;
import javax.swing.JApplet;
import java.awt.*;

public class Chapter_3 extends JApplet
{
    public void paint(Graphics page)
    {
        page.drawRect(50,50,60,60);
    }

    public static void main(String[] args)
    {
        int lenght,width,height,volume,Area,Perimeter;

        Scanner scan = new Scanner(System.in);

        System.out.println("What is the lenght:");
        lenght = scan.nextInt();

        System.out.println("What is the height:");
        height = scan.nextInt();

        System.out.println("What is the width:");
        width= scan.nextInt();

        volume = (lenght*height*width);
        Area= volume/height;
        Perimeter= lenght+width+lenght+width;   

        System.out.println("Your volume is:"+volume);
        System.out.println("Your Area is:"+ Area);
        System.out.println("Your perimeter is:"+Perimeter);

     }
}
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 7

你的问题:

如何组合GUI类和扫描仪类?

简答:不要.

更长的答案:至少不要尝试将GUI与绑定到System.in/console的扫描程序结合起来,因为这会导致尝试网格化两种截然相反的方式来获取用户输入:线性控制台输入与事件驱动的GUI交互.相反,为什么不让用户以事件驱动的方式通过GUI输入信息呢?否则,您将失去首先使用GUI的所有优势,并冒着将GUI的事件线程用于控制台输入的风险.

在您的情况下,我有三个JTextFields或JFormattedTextFields或JSpinner,用户可以在数据中输入,然后在按下JButton并启动其Action后,我会在另一个文本组件或JLabel中显示结果.

其他问题:你的GUI是一个JApplet,但你已经给它一个main方法并运行它的主方法,它永远不会工作,也不会显示GUI.请阅读您可以在此处找到的GUI教程.而是显示JFrame,而不是applet,覆盖JPanel并在其paintComponent方法中绘制(根据教程),并再次删除所有Scanner代码.