Перемещение кнопки по окну - Java

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

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

Добрый день! Помогите, пожалуйста, закончить задачу. Условие задачи: Расположить на форме две панели и на одной из панелей поместить кнопку. При нажатии на кнопку она должна перемещаться с одной панели на другую. Я написал код. Скорее всего, вплоть до 45-й строки код написан правильно. Но я не знаю, что нужно написать в коде начиная с 47-й строки, чтобы программа начала работать. Помогите, пожалуйста! Заранее благодарю!!!
Листинг программы
  1. package myhello;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. public class MyFrame extends JFrame {
  6. // Ссылка на внутренний контейнер формы
  7. private JPanel contentPane;
  8. // Массив из двух панелей
  9. JPanel[] panels = {new JPanel(), new JPanel()};
  10. // Кнопка под названием "кнопка"
  11. JButton button = new JButton("Button");
  12. // Номер панели, владеющей кнопкой
  13. int home;
  14. // Табличный менеджер, чтоб разместить две панели
  15. private GridLayout gridLayout1 = new GridLayout();
  16. public void init() throws Exception {
  17. // Сохраняем ссылку на панель содержания формы,
  18. // чтоб не вызывать метод getContentPane() много раз
  19. contentPane = (JPanel) getContentPane();
  20. // Устанавливаем табличный менеджер расположения
  21. contentPane.setLayout(gridLayout1);
  22. gridLayout1.setColumns(2);
  23. // Ставим панели на форму
  24. contentPane.add(panels[0]);
  25. contentPane.add(panels[1]);
  26. // Ставим кнопку на 0-ю панель
  27. home = 0;
  28. panels[home].add(button);
  29. // Обработчик нажатия на кнопку снимает ее
  30. // с одной панели и ставит на другую
  31. button.addActionListener(new java.awt.event.ActionListener() {
  32. public void actionPerformed(ActionEvent e) {
  33. panels[home].remove(button);
  34. panels[home].repaint();
  35. panels[1 - home].add(button);
  36. home = 1 - home;
  37. }
  38. });
  39. setSize(new Dimension(400, 300));
  40. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  41. }
  42. public static void main(String[] args) {
  43. MyFrame JPanel;
  44. }
  45. }

Решение задачи: «Перемещение кнопки по окну»

textual
Листинг программы
  1. import javax.swing.*;
  2. import javax.swing.border.EtchedBorder;
  3. import java.awt.*;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6.  
  7. /**
  8.  * Прыгающая кнопка
  9.  */
  10. public class JumpButton extends JFrame{
  11.  
  12.     JumpButton(){
  13.         JFrame frame = new JFrame("Jumper");
  14.         frame.add(new JBComponent());
  15.         //frame.setSize(500, 200);
  16.         frame.setBounds(500,200, 500, 200);
  17.         frame.setResizable(false);
  18.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  19.         frame.setVisible(true);
  20.     }
  21.  
  22.     private class JBComponent extends JComponent implements ActionListener{
  23.         JButton button;
  24.         JPanel panelL, panelR;
  25.         boolean flag = true;
  26.  
  27.         private JBComponent(){
  28.             button = new JButton("Hello!");
  29.             panelL = new JPanel();
  30.             panelR = new JPanel();
  31.             panelL.add(button);
  32.             panelL.setBorder(new EtchedBorder());
  33.             panelR.setBorder(new EtchedBorder());
  34.             setLayout(new GridLayout(1,2,5,10));
  35.             add(panelL);
  36.             add(panelR);
  37.             button.addActionListener(this);
  38.         }
  39.  
  40.         @Override
  41.         public void actionPerformed(ActionEvent e) {
  42.             if ((e.getSource() == button) && (flag == true)){
  43.                 panelL.remove(button);
  44.                 panelL.repaint();
  45.                 panelR.add(button);
  46.                 flag = false;
  47.             }else if ((e.getSource() == button) && (flag == false)){
  48.                 panelR.remove(button);
  49.                 panelR.repaint();
  50.                 panelL.add(button);
  51.                 flag = true;
  52.             }
  53.         }
  54.     }
  55.  
  56.     public static void main(String[] args) {
  57.         new JumpButton();
  58.     }
  59. }

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


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

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

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

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

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

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