2014-10-07 23 views
0

我是新來的Java和我試圖創建一個程序,將首先要求用戶輸入一些數字,並將輸出一個音量,面積等。此外,我想顯示一個矩形,我不知道如何做,因爲我的程序運行良好,它只是不會顯示矩形。我能做什麼?如何結合GUI類和掃描儀類?

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

不要將命令行和GUI組合到一個這樣的程序中。您可以使用GUI元素來提示用戶輸入。 – csmckelvey 2014-10-07 22:28:36

+0

對於這個特定的場景,如果你想有一個GUI,你不需要使用掃描儀,只需看看JOptionPane。 http://docs.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html – Ferox 2014-10-07 22:38:56

回答

7

你的問題:

如何在GUI類和掃描儀類結合?

簡答:不。

更長的回答:至少不要嘗試將GUI與Scanner綁定到System.in/console,因爲這會導致嘗試將獲取用戶輸入的兩種完全相反的方式進行網格化:線性控制檯輸入vs事件驅動,驅動的GUI交互。相反,爲什麼不讓用戶通過GUI以事件驅動的方式輸入信息?否則,您將失去使用GUI的所有優勢,並冒着捆綁GUI的事件線程進行控制檯輸入的風險。

你的情況,我有三個JTextFields或JFormattedTextFields或JSpinners,用戶可以在數據中輸入,然後我會顯示結果在另一個文本組件或JLabel,JButton被按下後,它的動作啓動。

其他問題:您的GUI是一個JApplet,但您已經給它一個主要方法並運行它永遠不會工作的主要方法,並且不會顯示GUI。請閱讀您可以找到的GUI教程here。相反,顯示一個JFrame而不是一個applet,覆蓋一個JPanel並繪製其paintComponent方法(按照教程),並再次擺脫所有的掃描器代碼。

+0

謝謝你,但我的意思就像我說的,我是新的,我知之甚少。然而,我的老師要求我們創建一個包含掃描器類和GUI的程序,我們還沒有看到任何JTextFields。再次感謝您的時間。 – Erick 2014-10-07 22:57:24