Rss & SiteMap

课外天地 李树青 http://www.njcie.com

李树青 论坛 南京 财经 课外天地
共1 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
admin 发表于: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编辑过]
共1 条记录, 每页显示 10 条, 页签: [1]

Copyright ©2002 - 2016 课外天地.Net
Powered By Dvbbs Version 8.3.0
Processed in .03125 s, 2 queries.