-- 作者: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编辑过]
|