Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема со Swing, Events + работа с файлом

244
16 марта 2009 года
UAS
2.0K / / 19.07.2006
Вообщем разрабатываю тут одну прогу с исопльзованием Swing (IDE - NetBeans). Возникла пара проблем, причем не могу понять отчего..

1) В какой-то момент времени обновляется модель JTable. Одной из ячеек в ряду должна являться JButton (далее по этой кнопочке нажимают и происходит определенной действие). Проблема в том, чтобы повесить событие на эту кнопку (описание ошибки в коде):
[highlight=java]
matchedPhrases.setDefaultRenderer(JButton.class, new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JButton button = new JButton();
button.setText("<");

/* Здесь не происходит добавления события, и даже после этого
* перестает отрисовываться текст кнопки ("<")
* Если вешать событие типа MouseListener, то текст не пропадает
* но событие все равно не происходит
*/
button.setAction(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
new AlertFrame(null,">_<?"); // просто выводит окошко с сообщением, это не может быть причиной ошибки, все работает
}
});


button.setEnabled(true);
button.setOpaque(true);

return button;
}
});
[/highlight]
З.Ы.: на таблицу также повешены следующие события: KeyListener, MouseListener. Есть getTableCellRendererComponent так же для типа Color и JLabel

2) Происходит поиск по тексту. Если текст вручную водить в поля, то поиск идет как надо. Если же текст поля брать из файла (от кодировки тут не зависит), то поиск происходит неверно. Т.е. происходит сравнение фраз, если они совпадают, то текст подсвечивается. Фраза складывается из посимвольного чтения текста до первого пробела и сравнивается с эталоном. Далее происходит подсветка (текущий_символ - длина_фразы).
Но что интересно - если открыть текст из файла, то на сравнение он отправляет правильные фрагменты текста (т.е. читает по тексту верно), но выделяет неверно (хотя формула одинаковая).
З.Ы. - код приводить не буду. Просто может кто-то сталкивался с этим. Если нет, то уже пороюсь в алгоритме снова, может пропустил чего..
502
21 марта 2009 года
Jail
550 / / 30.01.2007
Начнем из далека.... jdk (5,6) update ... ? Sun'овская ли jdk? jdk установленно несколько?
При создании интерфейса пользовались gui builder'ом?
244
23 марта 2009 года
UAS
2.0K / / 19.07.2006
SDK7 от SUN. Все, что связанно с майкрософтовской ява-машиной снесено)
При создании использовался GUI Builder NetBeans.
Вообщем, проблема в целом решена уже.

1) Убрал JButton, поставил обычный String со стрелочкой и повешал событие MouseListener на клик, из которой определял ячейку и в зависимости от этого делал что мне надо. Мб и криво, но сроки универа поджимают, да и просто не было желания копаться основательно)

2) Вообщем, проблема была в том, что я выделял фразу в тексте. Причем местополжение фраз определялось верно, только подсвечивалось почему-то все со сдвигами. Немного покопошившись пришел к тому, что в этом виноват "\r", т.е. перевод каретки. Сколько кареток было перед фразой, кот. надо было выделить, столько сдвигов было, хотя диапазон выделения передавался верно. Вообщем, решилось все обычным удалением из текста всех "\r".
512
02 апреля 2009 года
bnm
124 / / 17.10.2004
Цитата: UAS
"майкрософтовской ява-машиной"


Это как?)))

244
06 апреля 2009 года
UAS
2.0K / / 19.07.2006
Цитата: bnm
Это как?)))


В Windows есть своя ява-машина, которая, как я полагаю, была для J# в первую очередь. И которая, как это обычно у Майкрософт, не поддерживает кое-какие вещи, которые присущи JAVA (какие - не скажу).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог