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

时间:2014-10-07 22:26:43

标签: 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);

     }
}

1 个答案:

答案 0 :(得分:7)

你的问题:

  

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

简答:不要。

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

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

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