注册 登录
编程论坛 JAVA论坛

我想在事件里用for循环按钮该怎么设置呢?

lgw646634231 发布于 2015-12-12 00:18, 5900 次点击
程序代码:
// 添加25个按钮到p1
        JButton[] pb = new JButton[25];
        int bn;
        for (bn=0;bn < 25; bn++){
            p1.add(pb[bn] = new JButton(new ImageIcon("./src/images/cm.jpg")));// 按钮图片        
        
//监听者
        pb[bn].addActionListener(new ActionListener() {
            //监听事件
            public void actionPerformed(ActionEvent e) {
                pb[bn].setIcon(gw);
                pb[bn+1].setIcon(gw);
                pb[bn+5].setIcon(gw);
               
            }
        });}
搞了好久还是不行,我不想单独建许多按钮- -

我这个样子写,提示void 对于actionPerfomed 无效,
程序代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class luoguowen_game extends Frame implements ActionListener {
    /**
     *
     
*/
    private static final long serialVersionUID = -1383975989841903439L;

    public luoguowen_game() {
        // 创建
        JFrame f = new JFrame("国哥的第一个游戏");// 标题
        JPanel p1 = new JPanel();// 创建1容器
        JPanel p2 = new JPanel();// 创建2容器
        JSplitPane sp = new JSplitPane();// 创建容器分割
        ImageIcon ii = new ImageIcon("./src/images/tubiao.png");// 添加JFrame图标
        ImageIcon gw = new ImageIcon("./src/images/gw.jpg");// 添加替换图片
        Image tubiao = ii.getImage();// 创建JFrame图标对象
        Image image2 = gw.getImage();// 创建替换图片对象
        
// 主框体属性
        f.add(p1);// 主框添加容器
        f.setSize(610, 870);// 主框体尺寸
        f.setResizable(false);// 不可改变框体大小
        f.setLocationRelativeTo(null);// 主框出现在屏幕中央
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 点叉完全退出
        f.setIconImage(tubiao);// 设置JFrame图标
        JButton start = new JButton("开始");// 创建开始按钮
        p2.add(start);// 向p2添加开始按钮
        start.setPreferredSize(new java.awt.Dimension(100, 110));// 开始按钮设置为宽100,高110
        start.setFont(new Font("宋体", Font.LAYOUT_NO_LIMIT_CONTEXT, 33));// 开始字体设置为宋体、无布局限制、33号
        JButton restart = new JButton("重置");// 创建重置按钮
        p2.add(restart);// 向p2添加重置按钮
        restart.setPreferredSize(new java.awt.Dimension(100, 110));// 重置按钮设置为宽100,高110
        restart.setFont(new Font("宋体", Font.LAYOUT_NO_LIMIT_CONTEXT, 33));// 重置字体设置为宋体、无布局限制、33号

        
// 布局
        p1.setLayout(new GridLayout(5, 5));// 为p1容器设置5*5网格布局
        p2.setLayout(new FlowLayout());// 为p2容器设置流布局
        sp.setOrientation(JSplitPane.VERTICAL_SPLIT);// 分割容器为上下两部分
        sp.setBottomComponent(p2);// 设置p2在下
        sp.setTopComponent(p1);// 设置p1在上
        sp.setDividerSize(3); // 分割线大小设置3
        sp.setDividerLocation(710);// 分割线位置710
        f.setContentPane(sp);// 替换主框容器为分割容器

        
// 按钮
        
// String
        
// b[]={"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18",
        
// "19","20","21","22","23","24","25"};

        
// 添加25个按钮到p1
        int bn;
        JButton[] pb = new JButton[25];
        for (bn = 0; bn < 25; bn++)
            p1.add(pb[bn] = new JButton(new ImageIcon("./src/images/cm.jpg")));// 按钮图片
            f.setVisible(true);// 主框体可见
            
// 监听者
            pb[bn].addActionListener(this);
        // 监听事件
     public void actionPerformed(ActionEvent e) {
     pb[bn].setIcon(gw);
     pb[bn+1].setIcon(gw);
     pb[bn+5].setIcon(gw);
     }
    }

    public static void main(String[] args) {
        new luoguowen_game();
    }   
}


[此贴子已经被作者于2015-12-12 09:44编辑过]

8 回复
#2
lgw6466342312015-12-12 00:25
提示要 final修饰。。。可这根本就胡扯的嘛
#3
荷涵依旧2015-12-12 00:34
你想编程什么
#4
lgw6466342312015-12-12 09:42
回复 3楼 荷涵依旧
一个小游戏
#5
lgw6466342312015-12-12 16:30
= = 大神在哪儿
#6
林月儿2015-12-12 20:43
那里看出是游戏了?
#7
林月儿2015-12-12 20:48
程序代码:
public class Luoguowen_game extends Frame implements ActionListener
{
    /**
     *

     
*/
    private static final long serialVersionUID = -1383975989841903439L;
   

    public Luoguowen_game()
    {
        // 创建
        JFrame f = new JFrame("国哥的第一个游戏");// 标题
        JPanel p1 = new JPanel();// 创建1容器
        JPanel p2 = new JPanel();// 创建2容器
        JSplitPane sp = new JSplitPane();// 创建容器分割
        ImageIcon ii = new ImageIcon("./src/images/tubiao.png");// 添加JFrame图标
        ImageIcon gw = new ImageIcon("./src/images/gw.jpg");// 添加替换图片
        Image tubiao = ii.getImage();// 创建JFrame图标对象
        Image image2 = gw.getImage();// 创建替换图片对象
        
// 主框体属性
        f.add(p1);// 主框添加容器
        f.setSize(610, 870);// 主框体尺寸
        f.setResizable(false);// 不可改变框体大小
        f.setLocationRelativeTo(null);// 主框出现在屏幕中央
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 点叉完全退出
        f.setIconImage(tubiao);// 设置JFrame图标
        JButton start = new JButton("开始");// 创建开始按钮
        p2.add(start);// 向p2添加开始按钮
        start.setPreferredSize(new java.awt.Dimension(100, 110));// 开始按钮设置为宽100,高110
        start.setFont(new Font("宋体", Font.LAYOUT_NO_LIMIT_CONTEXT, 33));// 开始字体设置为宋体、无布局限制、33号
        JButton restart = new JButton("重置");// 创建重置按钮
        p2.add(restart);// 向p2添加重置按钮
        restart.setPreferredSize(new java.awt.Dimension(100, 110));// 重置按钮设置为宽100,高110
        restart.setFont(new Font("宋体", Font.LAYOUT_NO_LIMIT_CONTEXT, 33));// 重置字体设置为宋体、无布局限制、33号
      

        
// 布局
        p1.setLayout(new GridLayout(5, 5));// 为p1容器设置5*5网格布局
        p2.setLayout(new FlowLayout());// 为p2容器设置流布局
        sp.setOrientation(JSplitPane.VERTICAL_SPLIT);// 分割容器为上下两部分
        sp.setBottomComponent(p2);// 设置p2在下
        sp.setTopComponent(p1);// 设置p1在上
        sp.setDividerSize(3); // 分割线大小设置3
        sp.setDividerLocation(710);// 分割线位置710
        f.setContentPane(sp);// 替换主框容器为分割容器
      

        
// 按钮
        
// String
        
// b[]={"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18",
        
// "19","20","21","22","23","24","25"};
      

        
// 添加25个按钮到p1
        JButton[] pb = new JButton[25];
        for (int i = 0; i < 25; i++)
        {
            p1.add(pb[i] = new JButton(new ImageIcon("./src/images/cm.jpg")));// 按钮图片
            pb[i].addActionListener(this);
        }
        // 监听者
        f.setVisible(true);// 主框体可见
      

    }
   

    // 监听事件
    public void actionPerformed(ActionEvent e)
    {
        // pb[bn].setIcon(gw);
        
// pb[bn+1].setIcon(gw);
        
// pb[bn+5].setIcon(gw);
    }
   

    public static void main(String[] args)
    {
        new Luoguowen_game();
    }
}
#8
lgw6466342312015-12-12 22:45
回复 6楼 林月儿
还没写完呢,监听遇到问题了嘛
#9
lgw6466342312015-12-12 23:11
回复 7楼 林月儿
这个样子的话,下边的按钮事件就不能用了的嘛,我是设置点击一个按钮时:按钮对象、对象+1、对象+5的按钮切换图片
1