Я бы хотел, чтобы мой JFrame под Windows не действовал после нажатия клавиши ALT
. Чтобы уточнить, когда вы выполняете следующий фрагмент кода:
import javax.swing.*;
public class FrameTest {
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
и нажмите клавишу ALT
, а затем клавишу arrow down
, вы получите меню в верхнем левом углу, в котором вы можете выбрать, чтобы свернуть, переместить, закрыть и т. Д. Рамку (по крайней мере, я понял). Я хотел бы отключить это: т.е. JFrame не должен «слушать» эти ALT
нажатия.
Я считаю, что определенные компоненты Windows по умолчанию реагируют на клавишу ALT
, потому что, когда я добавляю строку меню в свой фрейм и явно устанавливаю внешний вид и внешний вид системы, меню (File
) теперь автоматически выбирается после нажатия клавиши ALT
:
import javax.swing.*;
public class FrameTest {
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("File");
menuBar.add(menu);
frame.setJMenuBar(menuBar);
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // set Windows look and feel
frame.setVisible(true);
}
}
и когда я удаляю UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
из приведенного выше примера, это поведение не проявляется при нажатии клавиши ALT
: меню не выбрано, но JFrame равен .
Когда внешний вид не настроен, используется «металлический» внешний вид. Из строки меню в моем предыдущем примере видно, что вы переходите от «родной вид» к «металлический вид» при удалении UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
из кода. Однако я не вижу изменений в JFrame, независимо от того, какой внешний вид и настройки я установил, он всегда выглядит как встроенная рамка Windows.
Итак, мой вопрос: как я могу отключить это ALT
поведение на моем JFrame? Я думаю, что могу сделать это, фактически изменив внешний вид JFrame. Это возможно? Если да, то как?
Спасибо!