KeyEvent.VK_CONTEXT_MENU не работает при отправке Robot в LinuxJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 KeyEvent.VK_CONTEXT_MENU не работает при отправке Robot в Linux

Сообщение Anonymous »

Я пытаюсь протестировать компонент Swing, который отображает меню при нажатии клавиши контекстного меню. Я просто фокусируюсь на компоненте и отправляю пресс-релизы с помощью awt Robot. Он работает в Windows, но не в Linux. Вот пример кода Java, который показывает целочисленный код ключевого события. При этом для события клавиши устанавливается значение 0. Однако при физическом нажатии клавиши оно отображается правильно как 525.

Код: Выделить всё

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class ContextMenuKeyTest {
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel = new JPanel();
JLabel label = new JLabel("Type something");
JTextField comp = new JTextField("Hello World!");
comp.setPreferredSize(new Dimension(300,100));
panel.add(label);
panel.add(comp);
comp.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
label.setText("Pressed: " + e.getKeyCode());
}
@Override
public void keyReleased(KeyEvent e) {}
});

frame.add(panel);
frame.pack();
frame.setVisible(true);
try {
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_C);
robot.keyPress(KeyEvent.VK_CONTEXT_MENU);
robot.keyRelease(KeyEvent.VK_CONTEXT_MENU);
} catch (AWTException e) {
e.printStackTrace();
}
}
});
}
}
Клавиша Windows также не работает должным образом при нажатии роботом и отлично работает при физическом нажатии. Остальные ключи работают нормально.

Проверено на Ubuntu с IceWM и на Debian с Xfce с Java 8.

Подробнее здесь: https://stackoverflow.com/questions/332 ... t-on-linux
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»