java.io.tmpdir в Windows и Linux

4 коммент. | добавить комментарий
Только что попробовал запустить в Убунту программу, разработанную под Windows. Ну что сказать - был удивлен.

System.getProperty("java.io.tmpdir") в Windows возвращает что-то наподобие:

C:\Windows\Temp\

А в Linux мне приходит вот что:

/tmp

Обратите внимание - в первом случае завершающий слеш есть, а во втором - нет, что требует дополнительной проверки в коде.

"Java: написано однажды - тестируем везде" (c)

Пропали ярлычки на рабочем столе!!!

8 коммент. | добавить комментарий
Сегодня вдруг осознал, что уже несколько дней мой рабочий стол в Ubuntu 9.04 девственно чист - т.е. с него исчезли все ярлычки! Кроме того, правый клик тоже не работает и не приводит к появлению контекстного меню. Что самое обидное - я ну ничегошеньки не делал такого, что могло бы к этому привести :(

Однако, в папке Desktop все осталось как прежде. Permissions также не изменились.

Погуглив немного, нашел решение:

1. Запустить gconf-editor
2. Выбрать apps - nautilus - preferences
3. Найти чекбокс show_desktop. Он будет отмечен, что странно.
4. Нажать по нему два раза мышкой, в возникшем окне нажать ОК.
5. Ура, ярлычки снова на месте!

Мне непонятно, почему нужно "подтверждать" отмеченность и так отмеченного чекбокса, но факты - штука неумолимая...

JTabbedPane и фокус в ней

0 коммент. | добавить комментарий

Сегодня нашел новый (для меня, разумеется) баг в Swing. Проблема заключается в том, что если на панели есть JTabbedPane, а в ней лежит компонент, который должен получить фокус после того, как происходит переключение на соответствующий таб, то фокус этот он не получит.

Вот неработающий код:


tabPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
txtName.requestFocusInWindow();
}
});

Баг #5089436 (а ему уже около 5 лет) предлагает воркэраунд, связанный с обрамлением вызова requestFocusInWindow() в  invokeLater():

tabPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
EventQueue.invokeLater(new Runnable() {
public void run() {
txtName.requestFocusInWindow();
});
}
});

А в остальном Свинг по-прежнему хорош.