gpt4 book ai didi

java - 将Keylistener添加到全屏JWindow

转载 作者:行者123 更新时间:2023-12-01 19:17:08 26 4
gpt4 key购买 nike

我制作了一个全屏 JWindow,我想添加一个简单的 KeyListener,以便在按箭头键时执行某些操作
但我不知道为什么它不起作用。我已将 key 监听器添加到所有组件。但它还不起作用
谁知道问题出在哪里?

最佳答案

默认情况下,JWindow 不会接收按键事件,除非您在创建窗口时指定 JFrame 作为所有者。以下代码演示了这一点:

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

public class WindowTest
{
public static void main(String[] args)
{

JFrame frame = new JFrame();
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// frame.setLocation(-200, 0); // uncomment this line to hide the dummy frame
frame.setVisible( true );

JWindow window = new JWindow(); // this doesn't work
// JWindow window = new JWindow(frame); // this works

window.getContentPane().add( new JTextField(10), BorderLayout.NORTH );
window.getContentPane().add( new JButton("Button") );
String[] items = { "Select Item", "Color", "Shape", "Fruit" };
JComboBox mainComboBox = new JComboBox( items );
window.getContentPane().add( mainComboBox, BorderLayout.SOUTH );

window.setBounds(50, 50, 200, 200);
window.setVisible(true);
window.getRootPane().setBorder(new javax.swing.border.MatteBorder(4, 4, 4, 4, Color.BLUE));
}
}

更简单的解决方案是使用未修饰的 JFrame:

JFrame frame = new JFrame();
frame.setUndecorated(true);

and I want to add a simple KeyListener that in case of pressing Arrow keys do somethings

此外,您不应该为此使用 KeyListener。您应该使用 Key Bindings

关于java - 将Keylistener添加到全屏JWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6137656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com