神龙剑士 2023-03-06 09:31 采纳率: 85.7%
浏览 26
已结题

for循环添加swing按钮组件



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循环这里,编译没问题,运行报错,求指点

  • 写回答

5条回答 默认 最新

  • Web Security Loop 2023-03-06 09:59
    关注
    • 参考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个空按钮。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 已采纳回答 3月6日
  • 创建了问题 3月6日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效