Вопрос такой: я выставляю текст подсказки у компонента методом setToolTipText("Some text"), как можно принудительно показать эту подсказку?
Т.е. сделать что-то типа component.showToolTip()?
Здравствуйте, Y-Vladimir, Вы писали:
YV>Вопрос такой: я выставляю текст подсказки у компонента методом setToolTipText("Some text"), как можно принудительно показать эту подсказку? YV>Т.е. сделать что-то типа component.showToolTip()?
Блин, реально не нашел нормального способа. Если найдешь — пиши.
Здравствуйте, Y-Vladimir, Вы писали:
YV>Вопрос такой: я выставляю текст подсказки у компонента методом setToolTipText("Some text"), как можно принудительно показать эту подсказку? YV>Т.е. сделать что-то типа component.showToolTip()?
Здравствуйте, Y-Vladimir, Вы писали:
YV>Вопрос такой: я выставляю текст подсказки у компонента методом setToolTipText("Some text"), как можно принудительно показать эту подсказку? YV>Т.е. сделать что-то типа component.showToolTip()?
Спасибо всем за ответы!
У меня такая задача — сделать так, чтобы у компонента JComboBox появлялись подсказки при навигации по элементам (когда он открыт). Вышеприведенные фрагменты работают не совсем так, как надо — подсказки появляются только если курсор мыши находится над комбобоксом. В чем проблема?
Код такой:
public class ComboBoxFrame extends JFrame {
private JComboBox comboBox = new JComboBox(new String[]{"item 1", "item 2", "item 3"});
public ComboBoxFrame() {
comboBox.setToolTipText("Не выбран элемент");
comboBox.getModel().addListDataListener(new ListDataListener() {
public void intervalAdded(ListDataEvent e) {}
public void intervalRemoved(ListDataEvent e) {}
public void contentsChanged(ListDataEvent e) {
comboBox.setToolTipText(comboBox.getModel().getSelectedItem().toString());
ToolTipManager toolTipManager = ToolTipManager.sharedInstance();
toolTipManager.mouseEntered(new MouseEvent(comboBox, 0, 0, 0, 0, 0, 0, false));
// Action action = comboBox.getActionMap().get("postTip");
// action.actionPerformed(new ActionEvent(comboBox, 0, "SHOW"));
}
});
add(comboBox, BorderLayout.NORTH);
setSize(200, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
}
public class Start {
public static void main(String[] args) {
(new ComboBoxFrame()).setVisible(true);
}
}
Здравствуйте, Y-Vladimir, Вы писали:
YV>Спасибо всем за ответы! YV>У меня такая задача — сделать так, чтобы у компонента JComboBox появлялись подсказки при навигации по элементам (когда он открыт). Вышеприведенные фрагменты работают не совсем так, как надо — подсказки появляются только если курсор мыши находится над комбобоксом. В чем проблема?
[грязное ругательство]... Ну, как обычно издаля зашли
B>Ну, как обычно издаля зашли да?
Не совсем, возможно я неточно описал проблему.
Нужно, чтобы в определенном месте относительно комбобокса (например, справа) вылезала подсказка (типа описания) при навигации по элементам клавишами "вверх", "вниз", когда этот комбобокс открыт. Мышь может быть в любом месте экрана. Т.е. фактически вся загвоздка в том, чтобы принудительно показать подсказку на компоненте, когда мы переходим клавишами к следующему элементу.
Здравствуйте, Y-Vladimir, Вы писали:
YV>Нужно, чтобы в определенном месте относительно комбобокса (например, справа) вылезала подсказка (типа описания) при навигации по элементам клавишами "вверх", "вниз", когда этот комбобокс открыт. Мышь может быть в любом месте экрана. Т.е. фактически вся загвоздка в том, чтобы принудительно показать подсказку на компоненте, когда мы переходим клавишами к следующему элементу.
Аааа... ну тогда ты не тот Listener повесил. Твоё событие порсиходит только когда данные меняются в модели. А тебе нужен ItemListener чтобы узнать когда будет выбран новый элемент.
Здравствуйте, Blazkowicz, Вы писали:
B>Аааа... ну тогда ты не тот Listener повесил. Твоё событие порсиходит только когда данные меняются в модели. А тебе нужен ItemListener чтобы узнать когда будет выбран новый элемент.
Немножко не в тему. Какой Listener по сути не важно, нам необходимо именно ПОКАЗАТЬ подсказку по наступлению какого-либо события, так как с изменением цвета, текста, местоположения проблем не возникает. Т.е. нам необходимо нечто типа метода showTooltip(), а уж откуда его вызывать не принципиально.
Здравствуйте, OneZerOne, Вы писали:
B>>Аааа... ну тогда ты не тот Listener повесил. Твоё событие порсиходит только когда данные меняются в модели. А тебе нужен ItemListener чтобы узнать когда будет выбран новый элемент.
OZO>Немножко не в тему. Какой Listener по сути не важно, нам необходимо именно ПОКАЗАТЬ подсказку по наступлению какого-либо события, так как с изменением цвета, текста, местоположения проблем не возникает. Т.е. нам необходимо нечто типа метода showTooltip(), а уж откуда его вызывать не принципиально.
Здравствуйте, Y-Vladimir, Вы писали:
YV>У меня такая задача — сделать так, чтобы у компонента JComboBox появлялись подсказки при навигации по элементам (когда он открыт). Вышеприведенные фрагменты работают не совсем так, как надо — подсказки появляются только если курсор мыши находится над комбобоксом. В чем проблема?
Действительно лажа какая-то с комбобоксом. С кнопками, например нормально работает. Даже хаки с созданием не пустой InputMap и editor-а не помогают.
Здравствуйте, Blazkowicz, Вы писали:
B>Действительно лажа какая-то с комбобоксом. С кнопками, например нормально работает. Даже хаки с созданием не пустой InputMap и editor-а не помогают.
Гоню. Все нормально работает через Action после небольшого хака с InputMap
Здравствуйте, OneZerOne, Вы писали:
OZO>В actionMap вообще ни одного ключа
Ага.
А так:
public class TestToolTip extends JFrame {
private JComboBox comboBox = new JComboBox(new String[]{"item 1", "item 2", "item 3"});
public TestToolTip() {
//Этот хак нужен для нормальной регистрации компоненты в ToolTipManager
InputMap inputMap = comboBox.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
comboBox.setInputMap(JComponent.WHEN_FOCUSED, inputMap);
//А вот здесь эта самая регистрация и происходит
comboBox.setToolTipText("Не выбран элемент");
//... skipped ...
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Oval, Вы писали:
O>>А вот чтобы вывести ToolTip в определенной позиции можно? O>>Или я уже задавал этот вопрос?
B>Вроде стандартная фича: B>http://javaalmanac.com/egs/javax.swing/tooltip_ToolTipLoc.html