2016-03-06 2 views
1

Когда компонент установлен как главный компонент в контейнере, его метод longPointerPress() никогда не вызывается.longPointerPress() никогда не вызывается на ведущем компоненте

Рассмотрим следующий пример:

final Button lead = new Button("Lead") { 
    @Override 
    public void longPointerPress(int x, int y) { 
     super.longPointerPress(x, y); 
     // Never invoked!!! 
     Dialog.show("", "Long pointer press at (" + x + "," + y + ")", "OK", null); 
    }}; 

// -------------------------------- 
// | Label | Lead | Another label | 
// -------------------------------- 
final Container c = BoxLayout.encloseX(new Label("Label"), lead, new Label("Another label")); 
c.setLeadComponent(lead); 

longPointerPress() никогда не вызывается. Однако, если я установил c.setLeadComponent(null), вызывается длинное нажатие. Тем не менее, я проиграю на понятии основного компонента.

Это ошибка? Если нет, как я могу понять, что я пытаюсь сделать?

ответ

1

Я думаю, вы должны попробовать этот путь

Кнопка свинца = новая кнопка ....

lead.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { if (event.isLongEvent()) { //do long click event stuff }else{ //do normal click event stuff or blank if nothing to do } }

Приветствия.

+0

Спасибо за предложение. Однако, я думаю, что я пробовал это раньше, и это не сработало. – sidiabale

0

Это не ошибка, это исправление. Это работает:

Form hi = new Form("LongPress", new BoxLayout(BoxLayout.Y_AXIS)); 
hi.add(new MultiButton("Long Press") { 
    @Override 
    public void longPointerPress(int x, int y) { 
     System.out.println("Long press"); 
    } 
}); 

Длинное нажатие указателя вызывается на свинцовой Container.

+0

1. Почему это считается исправлением? Я ожидал бы, что когда-то будет ведущий компонент, он также захватит длинную прессу. – sidiabale

+0

2. Решение, которое вы предлагаете, будет работать для MultiButtons, но как насчет таких случаев, как мой, где MultiButton недостаточно/используется? PS: Пример, который я набросал, был упрощенным случаем; У меня более сложный пользовательский интерфейс, который не соответствует ограничениям MultiButton. – sidiabale

+0

Он будет работать для каждого ведущего компонента. Просто переопределите longPress в родительском контейнере не в самом компоненте. –

Смежные вопросы