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

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

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

Добрый день! Помогите, пожалуйста, закончить задачу. Условие задачи: Расположить на форме две панели и на одной из панелей поместить кнопку. При нажатии на кнопку она должна перемещаться с одной панели на другую. Я написал код. Скорее всего, вплоть до 45-й строки код написан правильно. Но я не знаю, что нужно написать в коде начиная с 47-й строки, чтобы программа начала работать. Помогите, пожалуйста! Заранее благодарю!!!
package myhello;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public class MyFrame extends JFrame {
    
    // Ссылка на внутренний контейнер формы
        private JPanel contentPane;
        // Массив из двух панелей
        JPanel[] panels = {new JPanel(), new JPanel()};
        // Кнопка под названием "кнопка"
        JButton button = new JButton("Button");
        // Номер панели, владеющей кнопкой
        int home;
        // Табличный менеджер, чтоб разместить две панели
        private GridLayout gridLayout1 = new GridLayout();
    
    public void init() throws Exception {
        // Сохраняем ссылку на панель содержания формы, 
        // чтоб не вызывать метод getContentPane() много раз
        contentPane = (JPanel) getContentPane();
        // Устанавливаем табличный менеджер расположения
        contentPane.setLayout(gridLayout1);
        gridLayout1.setColumns(2);
        // Ставим панели на форму
        contentPane.add(panels[0]);
        contentPane.add(panels[1]);
        // Ставим кнопку на 0-ю панель
        home = 0;
        panels[home].add(button);
        // Обработчик нажатия на кнопку снимает ее 
        // с одной панели и ставит на другую
        button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                panels[home].remove(button);
                panels[home].repaint();
                panels[1 - home].add(button);
                home = 1 - home;
            }
        });
        setSize(new Dimension(400, 300));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
     public static void main(String[] args) {
         MyFrame JPanel;
                  
    }
}

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

textual
Листинг программы
import javax.swing.*;
import javax.swing.border.EtchedBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
/**
 * Прыгающая кнопка
 */
public class JumpButton extends JFrame{
 
    JumpButton(){
        JFrame frame = new JFrame("Jumper");
        frame.add(new JBComponent());
        //frame.setSize(500, 200);
        frame.setBounds(500,200, 500, 200);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
 
    private class JBComponent extends JComponent implements ActionListener{
        JButton button;
        JPanel panelL, panelR;
        boolean flag = true;
 
        private JBComponent(){
            button = new JButton("Hello!");
            panelL = new JPanel();
            panelR = new JPanel();
            panelL.add(button);
            panelL.setBorder(new EtchedBorder());
            panelR.setBorder(new EtchedBorder());
            setLayout(new GridLayout(1,2,5,10));
            add(panelL);
            add(panelR);
            button.addActionListener(this);
        }
 
        @Override
        public void actionPerformed(ActionEvent e) {
            if ((e.getSource() == button) && (flag == true)){
                panelL.remove(button);
                panelL.repaint();
                panelR.add(button);
                flag = false;
            }else if ((e.getSource() == button) && (flag == false)){
                panelR.remove(button);
                panelR.repaint();
                panelL.add(button);
                flag = true;
            }
        }
    }
 
    public static void main(String[] args) {
        new JumpButton();
    }
}

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


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

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

5   голосов , оценка 4 из 5
Похожие ответы