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