import javax.swing.*;
import java.awt.*;
import javax.swing.table.*;
import java.util.*;
import java.awt.event.*;
import java.net.URL;
import java.awt.Graphics;
import java.io.*;
import javax.imageio.*;
//商店类
public class w18{
JFrame j=new JFrame();
Container c=j.getContentPane();
public w18(){
JButton a[]=new JButton[24];
JPanel j1=new JPanel();
JPanel j2=new JPanel();
j2.setLayout(new GridLayout(12,8,5,5));
for(int i=0;i<24;i++){
//j2.add(a[i]);
}
JScrollPane s=new JScrollPane(j2);
//Icon dj2=new ImageIcon("dj2.png");
//dj[0].setIcon(dj2);
JButton w1=new JButton(" 装 备 ");
JButton w2=new JButton(" 药 剂 ");
JButton w3=new JButton(" 材 料 ");
JButton w4=new JButton(" 道 具 ");
//创建滚动面板,给文本域添加滚动条
j1.setBounds(0,0,300,50);
s.setBounds(0,50,275,350);
j1.add(w1);
j1.add(w2);
j1.add(w3);
j1.add(w4);
s.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//左右
s.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//上下
j.add(s);
j.add(j1);
//列 行
j.setLocationRelativeTo(null);//窗体居中
j.setSize(300,475);
j.setDefaultCloseOperation(2);//窗体关闭方式
j.setResizable(false);//用户禁止拉伸窗体
j.setLayout(null);
w1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
w2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
w3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
w4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
}
public static void main(String[]args){
new w18();
}//主方法
}
for循环这里,编译没问题,运行报错,求指点
参考GPT的内容和自己的思路:
在上面的代码中,for循环注释掉了,也就是没有实例化24个JButton,然后尝试将这些按钮添加到j2面板中,这样会导致空指针异常。因此,需要在for循环中实例化JButton并将其添加到j2面板中,如下所示:
JButton a[]=new JButton[24];
JPanel j1=new JPanel();
JPanel j2=new JPanel();
j2.setLayout(new GridLayout(12,8,5,5));
for(int i=0;i<24;i++){
a[i] = new JButton(); // 实例化JButton
j2.add(a[i]); // 将JButton添加到j2面板中
}
JScrollPane s=new JScrollPane(j2);
通过以上修改,你可以在j2面板中添加24个空按钮。
报什么错呢?是不是报:NullPointerException?
JButton数组只是定义了24个JButton对象,但没有调用对象的Create之类的创建函数,没有产生对象的句柄
在创建24个按钮的循环中,没有实例化按钮并添加到面板中,导致24个按钮没有显示。需要将注释掉的代码解除注释,并将按钮实例化添加到面板中。
此外,代码中没有实现按钮的功能,需要在每个按钮的ActionListener中添加具体的代码实现。