Guest User

Untitled

a guest
Feb 21st, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4.  
  5. import javax.swing.*;
  6.  
  7. public class Test {
  8. public static void main(String[] args) {
  9. new MyFrame();
  10. }
  11. }
  12.  
  13. class MyFrame extends JFrame {
  14. MyFrame() {
  15. setSize(400, 300);
  16. setTitle("MyFrame");
  17. setLocationRelativeTo(null);
  18. makeUI();
  19. setVisible(true);
  20. }
  21.  
  22. void makeUI() {
  23. add(new MyPanel());
  24. }
  25. }
  26.  
  27. class MyPanel extends JPanel {
  28. MyPanel(){
  29. setLayout(new GridLayout(4, 4));
  30. JButton[] b = new JButton[16];
  31. MyListener listener = new MyListener(b);
  32.  
  33. for(int i=0; i<16; i++){
  34. b[i] = new JButton(String.valueOf(i));
  35. b[i].addActionListener(listener);
  36. add(b[i]);
  37. }
  38.  
  39. b[15].setEnabled(false);
  40. b[15].setText("");
  41.  
  42. }
  43. }
  44.  
  45. class MyListener implements ActionListener {
  46. private JButton[] btn;
  47. private int[] nb;
  48.  
  49. public MyListener(JButton[] b) {
  50. btn = b;
  51. nb = new int[4];
  52. }
  53. @Override
  54. public void actionPerformed(ActionEvent e) {
  55. JButton b = (JButton)e.getSource();
  56.  
  57. for(int i=0; i<16; i++){
  58. if(b == btn[i])
  59. break;
  60. findNeighbor(i);
  61. }
  62.  
  63. for(int j=0; j<nb.length; j++){
  64. if(nb[j] >= 0 && !btn[nb[j]].isEnabled()){
  65. btn[nb[j]].setText(b.getText());
  66. b.setText("");
  67. b.setEnabled(false);
  68. btn[nb[j]].setEnabled(true);
  69. }
  70. }
  71. }
  72.  
  73. private void findNeighbor(int id) {
  74. // up
  75. nb[0] = id-4;
  76.  
  77. // down
  78. nb[1] = id+4;
  79. if (nb[1] >= 16)
  80. nb[1] = -1;
  81.  
  82. // left
  83. nb[2] = id-1;
  84. if (nb[2] < 0 || nb[2]%4 == 3)
  85. nb[2] = -1;
  86.  
  87. // right
  88. nb[3] = id+1;
  89. if (nb[3]%4 == 0)
  90. nb[3] = -1;
  91. }
  92. }
Add Comment
Please, Sign In to add comment