Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> меняющиеся панели 
:(
    Опции темы
DirtySpirit
Дата 1.8.2010, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.7.2010

Репутация: нет
Всего: нет



Всем привет.

Я новичек в Java.

Имеется фрейм, на нем панель, на которой ещё одна панель (p1). Надо сделать так, чтобы , при клике мышкой по панели p1, эта панель удалялась, а на её место добавлялась другая панель (p2). Затем, при нажатии на кнопки клавиатуры, панель p2 удалялась и на её место добавлялась панель p1 и т. д.

Компилятор ошибок не выдает. Запускаю. И когда кликаю на панель p1, она просто удаляется, а панель р2 не добавляется. Если порастягивать фрейм, то панель р2 дабавляется, но при нажатии на клавиатуру ничего не происходит.

Вот код:
Код

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class test
{
    public static void main(String[] args)
    {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);
        MainPanel panel = new MainPanel();
        frame.add(panel);
        frame.setVisible(true);
    }
}
class MainPanel extends JPanel
{
    Panel1 p1;
    Panel2 p2;
    public MainPanel()
    {
        p1 = new Panel1();
        p2 = new Panel2();
        switchPanel(1);
    }
    public void switchPanel(int switcher)
    {
        setLayout(new BorderLayout());
        if (switcher == 1)
        {
            remove(p2);
            add(p1, BorderLayout.CENTER);
        }
        if (switcher == 2)
        {
            remove(p1);
            add(p2, BorderLayout.CENTER);
        }
        repaint();
    }
    private class Panel1 extends JPanel
    {
        public Panel1()
        {
            setBackground(Color.WHITE);
            addMouseListener(new MouseAdapter()
                {
                    public void mouseClicked(MouseEvent event)
                    {
                        switchPanel(2);
                    }
                });
        }
    }
    private class Panel2 extends JPanel
    {
        public Panel2()
        {
            setBackground(Color.BLACK);
            addKeyListener(new KeyAdapter()
                {
                    public void keyPressed(KeyEvent event)
                    {
                        switchPanel(1);
                    }
                });
            setFocusable(true);
        }
    }
}

PM MAIL   Вверх
jk1
Дата 1.8.2010, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 21
Всего: 75



Заменяется по клику мыши, назад - по нажатию ESC
Код

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Test {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setSize(300, 200);
        frame.setContentPane(new MainPanel());
        frame.setVisible(true);
    }
}

class MainPanel extends JPanel {
    Panel1 p1;
    Panel2 p2;

    public MainPanel() {
        p1 = new Panel1();
        p2 = new Panel2();
        switchPanel(1);
    }

    public void switchPanel(int switcher) {
        setLayout(new BorderLayout());
        if (switcher == 1) {
            remove(p2);
            add(p1, BorderLayout.CENTER);
        }
        if (switcher == 2) {
            remove(p1);
            add(p2, BorderLayout.CENTER);
        }
        revalidate();
        repaint();
    }

    private class Panel1 extends JPanel {
        public Panel1() {
            setBackground(Color.WHITE);
            addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent event) {
                    switchPanel(2);
                }
            });
        }
    }

    private class Panel2 extends JPanel {
        public Panel2() {
            setBackground(Color.BLACK);
            registerKeyboardAction(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    switchPanel(1);

                }
            }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);

        }
    }
}


Это сообщение отредактировал(а) jk1 - 1.8.2010, 22:56


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
aleksandy
Дата 2.8.2010, 05:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 17.12.2006

Репутация: 1
Всего: 5



А зачем все это дело удалять? Может лучше использовать CardLayout
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.