Перемещение кнопки по окну - 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();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д