Аватар для InvalidCode
295 / 468 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
1

Как исправить ошибку работы KeyListener-a?

26.02.2018, 12:44. Показов 630. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
суть проблемы:
клас создает каталог проекта, и при вводе имени проекта проверяет наличие такого имени. если имя уже существует выводит сообщение, которое должно пропадать при дальнейшем редактировании имени.
метолд для ввода имени со встроеным обработчиком клавы:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    private static JPanel newProectNamePanel() {
        JPanel p = GuiComp.panel(c);
            tfn = new JTextField(sn, 25);//поле для введення назви проекту
            tfn.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent ke) {
                sn = tfn.getText();//записуємо назву в зміну
                File f = new File(newDir);
                if(isDir){
                    isDir = false;//Якщо в нас вже було введене ім'я існуючого каталогу змінюємо isDir на фалс і обновляємо вікно
                    revalidate();
                }
                //перевіряємо, чи введене ім'я відповідає вже існуючим іменам
                for(File item1 : f.listFiles()){
                    if(sn.equals(item1.getName())){
                        isDir = true;
                        revalidate();
                        break;
                    }
                }
            }
        });
            JLabel l = GuiComp.RGBPlain(Color.BLACK, 14, "Назва проекту");
        p.add(tfn);
        p.add(l);
        return p;
    }
перерисовщик окна
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    public static void revalidate() {
        if(x != null){
            wnp.getContentPane().removeAll();
        }
            wnp.addKeyListener(new DirKeyListener());//слухач клави
            x = Box.createVerticalBox();
                JPanel p2 = proectDir();//блок вибору каталогу
            x.add(p2);
                JPanel p3 = newProectNamePanel();//блок введеня імені проекту (каталог проекту отримає це ім'я)
            x.add(p3);
                JPanel p1 = GuiComp.panel(c);
                    JButton b = GuiComp.textButton(RGB.getColor("D38561"), Color.BLACK, "Відмінити", 16);
                        b.addActionListener(new ActionListener() {
                            @Override
                            public void actionPerformed(ActionEvent ae) {
                                wnp.setVisible(false);
                            }
                        });
                    JButton b1 = GuiComp.textButton(RGB.getColor("D38561"), Color.BLACK, "Створити", 16);
                    //
                    JLabel l = GuiComp.RGBPlain(Color.red, 14, "Такий проект вже існує!!!");//власне повідомлення про те, шо такий проект існує
                p1.add(b);
                p1.add(b1);
                if(isDir){
                    p1.add(l);
                }
            x.add(p1, BorderLayout.SOUTH);
        wnp.getContentPane().add(x, BorderLayout.WEST);
        wnp.validate();
    }
возникают следующипе ошибки:
1. при вводе существующего имени(например ред) сообщение об этом выводит лишь после ввода следущего случайного символа (например ред1)
2. после вывода сообщения о занятом имени, в поле ввода остается лишь "ред", и дальнейшее редактирование становится невозможным.
0
26.02.2018, 12:44
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.02.2018, 12:44
Ответы с готовыми решениями:

Первый день работы с джавой) что сделать, как исправить ошибку?

Исправить ошибку в коде работы с БД
connection.Open(); OleDbCommand command1 = new OleDbCommand("SELECT FROM " + mytablename + ", connection"); ...

Как исправить ошибку: формат теста исправить нельзя, только текст программы
class AmericanDate: def __init__(self, y, m, d): self.get_year = str(y) self.get_month = str(m//10)+str(m%10) ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.02.2018, 12:44
Помогаю со студенческими работами здесь

Подскажите как исправить ошибку. прога ломается на 79 строке. а ошибку не выдает
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int chisla(int a,int b) { ...

Структура: Не могу понять, почему выдает ошибку и как собственно эту ошибку можно исправить?
Привет,не могу понять почему ошибку выдает и как сбстно эту ошибку можно исправить? #include <stdio.h> #include...

Как исправить исправить ошибку в коде
Здравствуйте,помогите пожалуйста исправить ошибку в коде.using System; using System.Threading; namespace Gorokhov_2 { class...

Выводит ошибку MBS6006 "CL.exe" exited with code 2. Как исправить эту ошибку?
#pragma once #include "iostream" #include "conio.h" #include "cmath" #include <string> #include "windows.h" #define PI 3.14 ...

Выводит ошибку MBS6006 "CL.exe" exited with code 2. Как исправить эту ошибку?
Иногда возникает эта ошибка и не понимаю, мол откуда она. Погуглил - ничего дельного. Подскажите, как это решить. В онлайн компиляторе все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Использование кэша Laravel - полный гайд
bytestream 18.02.2025
Кэширование - один из наиболее эффективных способов повышения производительности веб-приложений. В современном мире, где скорость загрузки страниц напрямую влияет на удержание пользователей и. . .
Создаем REST API в Laravel с аутентификацией и Passport
bytestream 18.02.2025
Разработка современных веб-приложений все чаще требует создания надежного и хорошо структурированного API. REST API стал стандартом де-факто для построения взаимодействия между клиентской и серверной. . .
Пайплайны в Laravel - полный гайд
bytestream 18.02.2025
Разработка современных веб-приложений часто требует обработки сложных процессов, состоящих из множества последовательных шагов. Например, при создании системы комментариев может потребоваться. . .
Как правильно использовать @required в Symfony
bytestream 18.02.2025
При разработке приложений на Symfony мы часто сталкиваемся с необходимостью внедрения зависимостей. Фреймворк предоставляет несколько способов управления этим процессом, и одним из таких инструментов. . .
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru