2017-04-02 52 views
0

我是Java新手,正在嘗試運行此代碼。以下代碼中可能出現錯誤 - 我的JTextFieldtxtfld顯示爲一行而不是全文框?textfield未顯示大小合適

public class calculator 
{ 
    public static void main(String s[]) 
    { 
     JFrame j=new JFrame(); 
     j.setSize(400,600); 

     JPanel p1=new JPanel(); 
     JPanel p2=new JPanel(); 
     p1.setSize(400, 100); 
     p2.setSize(400, 500); 
     p1.setLocation(0, 0); 
     p2.setLocation(0, 100); 

     p2.setLayout(new GridLayout(4,4)); 
     j.add(p1); 
     j.add(p2); 


     JTextField txtfld=new JTextField(); 
     txtfld.setSize(390, 92); 
     txtfld.setLocation(5, 2); 
     //txtfld.setVisible(true);  
     p1.add(txtfld); 

     j.setVisible(true); 

    } 
} 
+2

我相信你不會寫你的代碼左對齊,所以修正代碼的格式,使我們更容易閱讀代碼。類名也應以大寫字母開頭。遵循Java標準。 – camickr

+0

您可以發送'JTextField'的屏幕截圖嗎? – ostrichofevil

+0

1)使用縮進代碼行和塊的邏輯和一致形式。縮進旨在使代碼的流程更易於遵循! 2)請學習常用的Java命名規則(命名約定 - 例如'EachWordUpperCaseClass','firstWordLowerCaseMethod()','firstWordLowerCaseAttribute',除非它是'UPPER_CASE_CONSTANT')並且一致地使用它。 3)請參閱[我是否應避免使用Java Swing中的set(Preferred | Maximum | Minimum)Size方法?](http://stackoverflow.com/q/7229226/418556)(是) –

回答

3
JTextField txtfld=new JTextField(); 

你需要給一個提示佈局管理器大小應該是什麼。

所以,你應該使用類似:

JTextField txtfld=new JTextField(10); 

現在的首選大小將使得10「W」字符需要滾動之前顯示在文本字段中。

你也應該包()使它可見之前的框架:

j.pack(); 
j.setVisible(); 

這將使框來顯示他們的首選大小的所有組件。

另外,擺脫所有的setSize()和setLocation()語句。佈局經理的職責是設置大小和位置。這些值將由佈局管理器重新計算。

j.add(p1); 
j.add(p2); 

一個框架的默認佈局管理器是一個BorderLayout。所以上面的代碼將導致p2替換幀上的p1。

基本上你的整個代碼是錯誤的。

首先閱讀有關How to Use Layout Managers的Swing教程的部分,以獲取更多信息和工作示例以幫助您入門。也許從BorderLayout例子開始,因爲這是你需要首先理解它的工作原理的默認佈局。

+0

感謝您的答覆。實際上,我正在製作一個計算器,因此我將尺寸和位置設置爲在兩側和兩個按鈕之間留下一些填充。我是否仍然使用佈局管理器? –

+0

*「在邊上和按鈕之間留下一些填充」* Java GUI必須使用不同語言環境中使用不同PLAF的不同操作系統,屏幕大小,屏幕分辨率等。因此,它們不利於像素的完美佈局。請使用佈局管理器或[它們的組合](http://stackoverflow.com/a/5630271/418556)以及**佈局填充和[*空白*]邊框(http://stackoverflow.com///418556)。** –

+0

@kamalpreetkaur, - '我設定的大小和位置留下一些填充兩側和按鈕之間 - 閱讀教程。有一個關於如何使用邊框的部分,用於在邊上留出空間。每個佈局管理器也將有不同的參數或方法來在組件之間添加空間。 – camickr