Перемещение кнопки по окну - 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();
}
}