import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JFrame;
public class CMain {
public static void main(String[] args) {
JFrame frame = new CMainFrame();
frame.setVisible(true);
}
}
class CMainFrame extends JFrame
{
private JPanel _ButtonPanel;
public CMainFrame(){
setTitle("小秘书");
setSize(800, 600);
setLayout(null);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
_ButtonPanel = new CButtonPanel();
_ButtonPanel.setBounds(10,10, 350, 580);
add(_ButtonPanel);
//for (int i=0 ,iLeft=10, iTop=10;iLeft<300;iLeft+=140, iTop+=145){
//}
}
}
class CButtonPanel extends JPanel
{
private JButton[] _MainButtons;
private String[] _MainButtonTitles = {"收支管理", "备忘录", "收支管理", "收支管理", "收支管理", "收支管理", "收支管理", "收支管理", "收支管理", "收支管理", "收支管理", "退出系统"};
private int iButtonWidth = 80;
private int iButtonHeight = 50;
public CButtonPanel(){
setLayout(null);
_MainButtons = new JButton[12];
//CMainButtons=new JButton[1];
//CMainButtons[0] = new JButton();
//CMainButtons[0].setLayout(null);
for (int i=0,iLeft=0,iTop=0;i<12;i++){
if (i%2==0) iLeft=0;
else iLeft=iButtonWidth*5/4;
System.out.println(_MainButtons[i]);
_MainButtons[i].setText(_MainButtonTitles[i]);
//_MainButtons[i].setBounds(iLeft, iTop+i/2*(iButtonHeight*5/4), 80, 50);
//add(_MainButtons[i]);
}
//_MainButtons[0].setBounds(0, 0, iButtonWidth, iButtonHeight);
//CMainButtons[0].setBorder(new EmptyBorder(10, 10, 10, 10));
}
}
/*class CMainButton extends JButton
{
public CMainButton(String sBtnName, int iLeft, int iTop, int iWidth, iHeight){
setTitle(sBtnName);
}
}*/
总是报标题那个错 发现只要执行跟_MainButtons[i]有关的操作就会报 可是我已经初始化了呀 为什么?
我看了一下你的代码_MainButtons 变量你从声明后就只MainButtons = new JButton[12];
在就没有实际用到了 而你每_MainButtons[i]一次所代表的是一个对象 可先你的_MainButtons数组中是空的 只给了长度 然后你去找其中对象的方法这个可能找到吗? 必须报错啊。
调试下呀..
_MainButtons = new JButton[12];
你不过实例化了一个JButton的数组而已。里面的12个JButton都是null啊。。。当然会空指针了。。。
自己要实例化JButton,然后加到这个_MainButtons 里面去。
[quote]
_MainButtons[i].setText(_MainButtonTitles[i]);
[/quote]
这句代码错误了,_MainButtons[i] 是null,当然报空指针错误了