Проблема со Swing, Events + работа с файлом
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) Происходит поиск по тексту. Если текст вручную водить в поля, то поиск идет как надо. Если же текст поля брать из файла (от кодировки тут не зависит), то поиск происходит неверно. Т.е. происходит сравнение фраз, если они совпадают, то текст подсвечивается. Фраза складывается из посимвольного чтения текста до первого пробела и сравнивается с эталоном. Далее происходит подсветка (текущий_символ - длина_фразы).
Но что интересно - если открыть текст из файла, то на сравнение он отправляет правильные фрагменты текста (т.е. читает по тексту верно), но выделяет неверно (хотя формула одинаковая).
З.Ы. - код приводить не буду. Просто может кто-то сталкивался с этим. Если нет, то уже пороюсь в алгоритме снова, может пропустил чего..
При создании интерфейса пользовались gui builder'ом?
При создании использовался GUI Builder NetBeans.
Вообщем, проблема в целом решена уже.
1) Убрал JButton, поставил обычный String со стрелочкой и повешал событие MouseListener на клик, из которой определял ячейку и в зависимости от этого делал что мне надо. Мб и криво, но сроки универа поджимают, да и просто не было желания копаться основательно)
2) Вообщем, проблема была в том, что я выделял фразу в тексте. Причем местополжение фраз определялось верно, только подсвечивалось почему-то все со сдвигами. Немного покопошившись пришел к тому, что в этом виноват "\r", т.е. перевод каретки. Сколько кареток было перед фразой, кот. надо было выделить, столько сдвигов было, хотя диапазон выделения передавался верно. Вообщем, решилось все обычным удалением из текста всех "\r".
Цитата: UAS
"майкрософтовской ява-машиной"
Это как?)))
Цитата: bnm
Это как?)))
В Windows есть своя ява-машина, которая, как я полагаю, была для J# в первую очередь. И которая, как это обычно у Майкрософт, не поддерживает кое-какие вещи, которые присущи JAVA (какие - не скажу).