Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2013, 01:57   #1
hauk70
Пользователь
 
Регистрация: 06.05.2012
Сообщений: 22
По умолчанию Jpanel и не работающий KeyAdapter

Дела такие:
1. Создаем фрейм, создаем панель1(с кнопками).
2. По нажатию по кнопке на панеле1 удаляем ее с фрейма и ставим панель2, обновляем.

И вроде бы все просто, да работает не все, хоть панель отрисовывается. После всего проделанного перестает реагировать вот этот кусочек кода:

Код:
    private class MyKeyAdapter extends KeyAdapter {

        public void keyPressed(KeyEvent e) {
            p.keyPressed(e);
        }

        public void keyReleased(KeyEvent e) {
            p.keyReleased(e);
        }
    }
Но если же панель2 сразу поставить на форму то все события работают. Убрал все лишнее

Вот код

Код:
public class Tanks {

    static JFrame mainFrame = null; //наш фрейм
    static JPanel currPanel = null; //используемая панель на фрейме
 
    public static void main(String[] args) {
        mainFrame = new JFrame("frame");
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         
         currPanel = new mainPanel(); //та самая панель1
        //currPanel = new Map();  // и панель2

        mainFrame.add(currPanel);
        mainFrame.setVisible(true);
    }

    public static class mainPanel extends JPanel {

        public mainPanel() {
            setLayout(null);
            JButton StartButton = new JButton("Start");
            StartButton.setBounds(210, 150, 180, 25);
            StartButton.addMouseListener(new Start_Handler());
        }
    }

    public static class Start_Handler implements MouseListener {

        public Start_Handler() {
        }

        @Override
        public void mouseReleased(MouseEvent e) {  
            mainFrame.remove(currPanel); //удаляем панель1 с фрейма
            currPanel = new Map();      // создаем панель2 
            mainFrame.add(currPanel); // и возвращаем на фрейм
            mainFrame.repaint();
        }

    }
}
Вот код второй панели:
Код:
public class Map extends JPanel implements ActionListener, Runnable {

    Thread BoxesFactory = new Thread(this);
       Player p = new Player(2, 12, 1, this);

    public Map() {
        BoxesFactory.start();
        mainTimer.start();
        addKeyListener(new MyKeyAdapter());
        setFocusable(true);
    }

    private class MyKeyAdapter extends KeyAdapter {

        public void keyPressed(KeyEvent e) {
            p.keyPressed(e);
        }

        public void keyReleased(KeyEvent e) {
            p.keyReleased(e);
        }
    }


    public void actionPerformed(ActionEvent e) {
        p.move();
        repaint();
    }
}

Последний раз редактировалось hauk70; 06.03.2013 в 02:49.
hauk70 вне форума Ответить с цитированием
Старый 07.03.2013, 17:48   #2
hauk70
Пользователь
 
Регистрация: 06.05.2012
Сообщений: 22
По умолчанию

Спасибо за неоценимую помощь, решил проблему.
setFocusable(true); это установка, будет ли данный элемент иметь возможность выделения, но не само выделение.
Выделение элемента - Panel.requestFocus();
hauk70 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размеры JPanel yazZ3va Общие вопросы по Java, Java SE, Kotlin 1 11.12.2012 14:11
Проблема с JPanel doctorclo2011 Общие вопросы по Java, Java SE, Kotlin 1 24.06.2012 20:19
JPanel grimm_jow Общие вопросы по Java, Java SE, Kotlin 6 30.11.2010 18:59
JPanel объясните Sasha9132 Общие вопросы по Java, Java SE, Kotlin 0 29.11.2010 20:41
Jpanel в JscrollPane Jakethefish Общие вопросы по Java, Java SE, Kotlin 0 15.11.2010 14:25