课外天地 李树青学习天地Java程序语言课件 → [推荐]第五次上机作业的说明——按钮数组的使用(九宫格)


  共有15875人关注过本帖树形打印复制链接

主题:[推荐]第五次上机作业的说明——按钮数组的使用(九宫格)

帅哥哟,离线,有人找我吗?
admin
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1940 积分:26616 威望:0 精华:34 注册:2003/12/30 16:34:32
[推荐]第五次上机作业的说明——按钮数组的使用(九宫格)  发帖心情 Post By:2008/6/5 8:42:33 [只看该作者]

import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Exec {
        public static void main(String[] args) {
                DemoWindow dw = new DemoWindow("演示");
                Toolkit theKit = dw.getToolkit();
                Dimension wndSize = theKit.getScreenSize();
                dw.setBounds(wndSize.width / 3, wndSize.height / 3, wndSize.width / 3,
                                wndSize.height / 3);
                dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                dw.setVisible(true);
        }
}

class DemoWindow extends JFrame implements ActionListener {
        JPanel jp = new JPanel();

        JButton[] jbs = new JButton[9];

        int[] records = new int[9];

        public DemoWindow(String title) {
                super(title);
                setLayout(new GridLayout(3, 3));
                for (int i = 0; i < jbs.length; i++) {
                        jbs[i] = new JButton("");
                        jbs[i].setFont(new Font("黑体", Font.BOLD, 32));
                        jbs[i].addActionListener(this);
                        add(jbs[i]);
                }
                initializeRandomNumber(records);
                initializeButton(jbs);
        }

        public void actionPerformed(ActionEvent e) {
                JButton jb = (JButton) e.getSource();
                if (!jb.getText().equals("")) {
                        int currentNumber = Integer.parseInt(jb.getText());
                        int currentPos = -1;
                        for (int i = 0; i < records.length; i++) {
                                if (records[i] == currentNumber) {
                                        currentPos = i;
                                        break;
                                }
                        }
                        if (currentPos >= 3 && records[currentPos - 3] == 9) {
                                exchangetTwoNumber(records, currentPos, currentPos - 3);
                                exchangeLabel(currentPos, currentPos - 3);
                        }
                        if (currentPos < 6 && records[currentPos + 3] == 9) {
                                exchangetTwoNumber(records, currentPos, currentPos + 3);
                                exchangeLabel(currentPos, currentPos + 3);
                        }
                        if (currentPos % 3 != 0 && records[currentPos - 1] == 9) {
                                exchangetTwoNumber(records, currentPos, currentPos - 1);
                                exchangeLabel(currentPos, currentPos - 1);
                        }
                        if (currentPos % 3 != 2 && records[currentPos + 1] == 9) {
                                exchangetTwoNumber(records, currentPos, currentPos + 1);
                                exchangeLabel(currentPos, currentPos + 1);
                        }
                        boolean flag = false;
                        for (int i = 0; i < records.length; i++) {
                                if (records[i] != i + 1) {
                                        flag = true;
                                        System.out.println(records[i] + ";" + (i + 1));
                                        break;
                                }
                        }
                        if (flag == false)
                                JOptionPane.showMessageDialog(null, "成功!");

                }
        }

        private void initializeRandomNumber(int[] records) {
                for (int i = 0; i < records.length; i++) {
                        records[i] = i + 1;
                }
                for (int i = 0; i < 100; i++) {
                        int beginPos = (int) (Math.random() * 9);
                        int endPos = (int) (Math.random() * 9);
                        exchangetTwoNumber(records, beginPos, endPos);
                }
        }

        private void initializeButton(JButton[] jbs) {
                for (int i = 0; i < jbs.length; i++) {
                        if (records[i] != 9)
                                jbs[i].setText(String.valueOf(records[i]));
                        else
                                jbs[i].setText("");
                }
        }

        private void exchangetTwoNumber(int[] records, int a, int b) {
                int temp = records[a];
                records[a] = records[b];
                records[b] = temp;
                for (int i = 0; i < records.length; i++)
                        System.out.print(records[i]);
                System.out.println();
        }

        private void exchangeLabel(int beginPos, int endPos) {
                String label = jbs[beginPos].getText();
                jbs[beginPos].setText(jbs[endPos].getText());
                jbs[endPos].setText(label);
        }

}

[此贴子已经被作者于2010-12-12 08:26:22编辑过]

 回到顶部