弟弟学java,被老师出了一道十字翻转棋的题目,恨不得一个键一个键往frame里塞,写了近千行还搞不定。
帮他修改了一下,用二维数组循环生成按键和监听。同时,根据脚标来进行十字变色的算法也非常简单。
package com;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JMenu;
import javax.swing.SwingConstants;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import java.awt.GridLayout;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JLabel;
public class Black_White {
private JFrame frame = new JFrame();
private static int step;
ArrayList<ArrayList<JButton>> keylist2 = new ArrayList<ArrayList<JButton>>();
JLabel label = new JLabel(" 步数:");
private final JButton button = new JButton("作弊");
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Black_White window = new Black_White();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Black_White() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame.setBounds(400, 200, 600, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JOptionPane jop = new JOptionPan