Замена местами кнопок в ArrayList JavaSwing

Узнай цену своей работы

Формулировка задачи:

Всем здравствуйте. делаю игру пятнашки на java Swing.
  • Создаю ArrayList<JButton>
  • туда заношу все созданные кнопки со значениями.
  • ArrayList<JButton> добавляю в JPanel
  • и все это во фрейм. д
  • обавляю слушатель.
  • запускаю
Листинг программы
  1. public void actionPerformed(ActionEvent e) {
  2. event = (JButton) e.getSource();
  3. System.out.println(event.equals(button1));
  4. if (event.equals(button1)) {
  5. int x = button.indexOf(button1);
  6. int y = button.indexOf(button0); //меняю в ArrayList. местами кнопки
  7. button.set(x, button0);
  8. button.set(y, button1);
  9. x = button.indexOf(button1);
  10. y = button.indexOf(button0);
  11. }
  12. }
меняю в ArrayList. местами кнопки.Почему не меняются кнопки местами при отображении приложения? Весь код игры:
Листинг программы
  1. package barley_break_GUI;
  2. import java.awt.BorderLayout;
  3. import java.awt.Dimension;
  4. import java.awt.GridLayout;
  5. import java.awt.Image;
  6. import java.awt.Toolkit;
  7. import java.awt.event.ActionListener;
  8. import java.util.ArrayList;
  9. import javax.swing.ImageIcon;
  10. import javax.swing.JButton;
  11. import javax.swing.JFrame;
  12. import javax.swing.JPanel;
  13. public class Barley_Break_GUI_Start extends JPanel implements
  14. Barley_Break_Constance {
  15. static Barley_Break_GUI_Start start = new Barley_Break_GUI_Start();
  16. JFrame frame = new JFrame();
  17. ArrayList<JButton> button = new ArrayList<JButton>(16);
  18. JPanel panelbutton = new JPanel();
  19. int width = 0;
  20. int height = 0;
  21. public Barley_Break_GUI_Start() {
  22. Barley_Break_GUI_Engine engine = new Barley_Break_GUI_Engine(start,
  23. button);
  24. ActionListener action = new Barley_Break_GUI_Engine(start, button);
  25. button1.addActionListener(action);
  26. }
  27. public static void main(String[] args) {
  28. start.createFrame();
  29. }
  30. public void createFrame() {
  31. start.createDimension();
  32. frame.setSize(width, height);
  33. frame.setTitle("Barley_Break");
  34. Image image = new ImageIcon("icon.gif").getImage();
  35. frame.setIconImage(image);
  36. start.createan();
  37. frame.getContentPane().add(panelbutton, BorderLayout.CENTER);
  38. frame.setLocationByPlatform(true);
  39. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  40. frame.setVisible(true);
  41. }
  42. public void createDimension() {
  43. Toolkit kit = Toolkit.getDefaultToolkit();
  44. Dimension dim = kit.getScreenSize();
  45. width = dim.width / 4;
  46. height = dim.height / 4;
  47. }
  48. public void createan() {
  49. button.add(button0);
  50. button.get(0).setEnabled(false);
  51. button.add(button1);
  52. button.add(button2);
  53. button.add(button3);
  54. button.add(button4);
  55. button.add(button5);
  56. button.add(button6);
  57. button.add(button7);
  58. button.add(button8);
  59. button.add(button9);
  60. button.add(button10);
  61. button.add(button11);
  62. button.add(button12);
  63. button.add(button13);
  64. button.add(button14);
  65. button.add(button15);
  66. panelbutton.setLayout(new GridLayout(4, 4));
  67. for (int i = 0; i < button.size(); i++) {
  68. panelbutton.add(button.get(i));
  69. }
  70. }
  71. }
  72. package barley_break_GUI;
  73. import java.awt.event.ActionEvent;
  74. import java.awt.event.ActionListener;
  75. import java.util.ArrayList;
  76. import javax.swing.JButton;
  77. public class Barley_Break_GUI_Engine implements Barley_Break_Constance,
  78. ActionListener {
  79. Barley_Break_GUI_Start start;
  80. ArrayList<JButton> button;
  81. JButton event;
  82. public Barley_Break_GUI_Engine(Barley_Break_GUI_Start start,
  83. ArrayList<JButton> button) {
  84. this.start = start;
  85. this.button = button;
  86. }
  87. @Override
  88. public void actionPerformed(ActionEvent e) {
  89. event = (JButton) e.getSource();
  90. System.out.println(event.equals(button1));
  91. if (event.equals(button1)) {
  92. int x = button.indexOf(button1);
  93. int y = button.indexOf(button0);
  94. button.set(x, button0);
  95. button.set(y, button1);
  96. x = button.indexOf(button1);
  97. y = button.indexOf(button0);
  98. }
  99. }
  100. }
  101. package barley_break_GUI;
  102. import javax.swing.JButton;
  103. public interface Barley_Break_Constance {
  104. JButton button0 = new JButton(" ");
  105. JButton button1 = new JButton("1");
  106. JButton button2 = new JButton("2");
  107. JButton button3 = new JButton("3");
  108. JButton button4 = new JButton("4");
  109. JButton button5 = new JButton("5");
  110. JButton button6 = new JButton("6");
  111. JButton button7 = new JButton("7");
  112. JButton button8 = new JButton("8");
  113. JButton button9 = new JButton("9");
  114. JButton button10 = new JButton("10");
  115. JButton button11 = new JButton("11");
  116. JButton button12 = new JButton("12");
  117. JButton button13 = new JButton("13");
  118. JButton button14 = new JButton("14");
  119. JButton button15 = new JButton("15");
  120. }

Решение задачи: «Замена местами кнопок в ArrayList JavaSwing»

textual
Листинг программы
  1. package barley_break_GUI;
  2.  
  3. import java.awt.Dimension;
  4. import java.awt.GridLayout;
  5. import java.awt.Image;
  6. import java.awt.Toolkit;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9. import java.util.ArrayList;
  10. import java.util.Collections;
  11. import javax.swing.ImageIcon;
  12. import javax.swing.JButton;
  13. import javax.swing.JFrame;
  14. import java.util.List;
  15.  
  16. public class Barley_Break_GUI_Start implements ActionListener {
  17.  
  18.     static Barley_Break_GUI_Start start = new Barley_Break_GUI_Start();
  19.     JFrame frame = new JFrame();
  20.     List<JButton> buttonList;
  21.     JButton button0;
  22.     int width = 0;
  23.     int height = 0;
  24.  
  25.     public static void main(String[] args) {
  26.         start.createFrame();
  27.  
  28.     }
  29.  
  30.     public void createFrame() {
  31.         start.createDimension();
  32.         frame.setSize(width, height);
  33.         frame.setResizable(false);
  34.         frame.setTitle("Barley_Break");
  35.         Image image = new ImageIcon("icon.gif").getImage();
  36.         frame.setIconImage(image);
  37.         frame.setLocationByPlatform(true);
  38.         start.createButton();
  39.         start.addButtonInFrame();
  40.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  41.         frame.setVisible(true);
  42.  
  43.     }
  44.  
  45.     public void createDimension() {
  46.         Toolkit kit = Toolkit.getDefaultToolkit();
  47.         Dimension dim = kit.getScreenSize();
  48.         width = dim.width / 4;
  49.         height = dim.height / 4;
  50.     }
  51.  
  52.     public void createButton() {
  53.         buttonList = new ArrayList<JButton>(16);
  54.         button0 = new JButton(" ");
  55.         button0.setEnabled(false);
  56.         for (int i = 1; i < 16; i++) {
  57.             JButton button = new JButton(Integer.toString(i));
  58.             button.addActionListener(this);
  59.             buttonList.add(button);
  60.         }
  61.         Collections.shuffle(buttonList);
  62.         buttonList.add(0, button0);
  63.     }
  64.  
  65.     public void addButtonInFrame() {
  66.         frame.getContentPane().setLayout(new GridLayout(4, 4));
  67.         for (JButton jButton : buttonList) {
  68.             frame.getContentPane().add(jButton);
  69.         }
  70.         frame.getContentPane().doLayout();
  71.     }
  72.  
  73.     @Override
  74.     public void actionPerformed(ActionEvent e) {
  75.         Object source = e.getSource();
  76.         if (source instanceof JButton) {
  77.             JButton sourceButton = (JButton) source;
  78.             int indexSource = buttonList.indexOf(sourceButton);
  79.             int indexButton0 = buttonList.indexOf(button0);
  80.             if (indexSource == (indexButton0 + 1)) {
  81.                 buttonList.set(indexSource - 1, sourceButton);
  82.                 buttonList.set(indexSource, button0);
  83.             } else if (indexSource == (indexButton0 - 1)) {
  84.                 buttonList.set(indexSource + 1, sourceButton);
  85.                 buttonList.set(indexSource, button0);
  86.             } else if (indexSource == (indexButton0 - 4)) {
  87.                 buttonList.set(indexSource + 4, sourceButton);
  88.                 buttonList.set(indexSource, button0);
  89.             } else if (indexSource == (indexButton0 + 4)) {
  90.                 buttonList.set(indexSource - 4, sourceButton);
  91.                 buttonList.set(indexSource, button0);
  92.             }
  93.         }
  94.         start.addButtonInFrame();
  95.     }
  96.  
  97. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут