[英]NullPointerException for JButton
我試圖將文本分配給循環內的按鈕,但我得到一個NullPointerException。 我已經在類的構造函數中初始化了按鈕數組,在initilizatoin之后,我調用了以下方法。 這是我收到錯誤的代碼。
public class Alfred
{
private String names[]={"nfs","gta","maxpayne","hitman"};
private JButton but[];
public Alfred()
{
...
but= new JButton[4];
AssignLettersToButtons();
}
private void AssignLettersToButtons()
{
for(int i=0;i<names.length;i++)
{
but[i].setText(names[i]); // error
pane1.add(but[i]);
}
}
}
}
按鈕數組和名稱數組的長度相同。 這個例外的原因是什么,我該如何解決?
問候
but= new JButton[4];
這只為四個數組元素分配空間 ; 每個元素都初始化為null
,這是JButton
對象之類的引用類型的默認值 。
but[0]
, but[1]
, but[2]
, but[3]
都是null
。
你應該像這樣初始化它們:
but[0] = new JButton(); //or whatever.
你沒有初始化but
數組中的元素。
如果要在循環中進行初始化,可以將其簡化為:
for (int i=0;i<names.length;i++)
pane1.add(but[i] = new JButton(names[i]));
這里
but[i].setText(names[i]); //but[i] is null here
在調用方法之前初始化but數組
並實例化數組中的元素,因為它們都是null只是看
for(int i=0;i<names.length;i++)
{
System.out.println(but[i]);//all will print null
}
嘗試這樣的代碼來實例化元素
for(int i=0;i<names.length;i++)
{
but[i]= new Jbutton();
}
如果but數組的大小是5.在執行以下操作之前,在其中添加5個對象:
but[i].setText(names[i]);
我認為你的數組還沒有用對象進行初始化,這就是為什么當你使用setText()
它給你NPE。
嘗試以下內容:
for(int i=0;i<names.length;i++)
{
JButton butObject = new JButton();//Add this line to your code
but[i]=butObject; // Add this line to your code
but[i].setText(names[i]); // error
pane1.add(but[i]);
}
Java將JButton類型的數組初始化為0(又稱NULL)。 您需要將數組的每個索引初始化為指向JButton實例的指針,因為它不會為每個元素自動調用構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.