Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.*;
- public class Test {
- public static void main(String[] args) {
- new MyFrame();
- }
- }
- class MyFrame extends JFrame {
- MyFrame() {
- setSize(400, 300);
- setTitle("MyFrame");
- setLocationRelativeTo(null);
- makeUI();
- setVisible(true);
- }
- void makeUI() {
- add(new MyPanel());
- }
- }
- class MyPanel extends JPanel {
- MyPanel(){
- setLayout(new GridLayout(4, 4));
- JButton[] b = new JButton[16];
- MyListener listener = new MyListener(b);
- for(int i=0; i<16; i++){
- b[i] = new JButton(String.valueOf(i));
- b[i].addActionListener(listener);
- add(b[i]);
- }
- b[15].setEnabled(false);
- b[15].setText("");
- }
- }
- class MyListener implements ActionListener {
- private JButton[] btn;
- private int[] nb;
- public MyListener(JButton[] b) {
- btn = b;
- nb = new int[4];
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- JButton b = (JButton)e.getSource();
- for(int i=0; i<16; i++){
- if(b == btn[i])
- break;
- findNeighbor(i);
- }
- for(int j=0; j<nb.length; j++){
- if(nb[j] >= 0 && !btn[nb[j]].isEnabled()){
- btn[nb[j]].setText(b.getText());
- b.setText("");
- b.setEnabled(false);
- btn[nb[j]].setEnabled(true);
- }
- }
- }
- private void findNeighbor(int id) {
- // up
- nb[0] = id-4;
- // down
- nb[1] = id+4;
- if (nb[1] >= 16)
- nb[1] = -1;
- // left
- nb[2] = id-1;
- if (nb[2] < 0 || nb[2]%4 == 3)
- nb[2] = -1;
- // right
- nb[3] = id+1;
- if (nb[3]%4 == 0)
- nb[3] = -1;
- }
- }
Add Comment
Please, Sign In to add comment