gpt4 book ai didi

java - 即使窗口未聚焦,也使 JTextField 接收输入

转载 作者:行者123 更新时间:2023-11-30 08:01:52 26 4
gpt4 key购买 nike

我正在开展一个小型个人项目。

我有两个 JFrame 窗口,ViewerConsole

  • Viewer 仅包含 JPanel 的子类,并且它应该响应鼠标输入(主要是单击)。
  • Console 包含一个按钮、一个 JTextField(输入)和一个 JTextArea(输出)。

我需要确保当我按下键盘上的按键时,相应的文本会出现在控制台JTextField中,而不仅仅是当焦点由JTextField保持时,而且当它包含我的应用程序中的任何其他组件时也是如此。

换句话说,我希望即使在单击 Viewer 框架后,JTextField 也能接受输入。

这可行吗?

万一重要的是,我运行的是 win 8 x64,我并不真正关心可移植性(我是唯一一个会查看或使用此代码的人)。

编辑:这是我的代码示例:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;



public class main {
public static Viewer v;
public static Console c;
public static void main(String[] args) {
v=new Viewer();
c=new Console();
}


static class Viewer extends JFrame {
public Viewer(){
setSize(600,600);
getContentPane().add(new myPanel());
addMouseListener(new mouse());
setVisible(true);

}
}
static class myPanel extends JPanel{
public void paintComponent(Graphics g){
g.setColor(new Color((int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255)));
g.fillRect(0, 0, 600, 600);
}
}
static class Console extends JFrame {
public Console(){
setSize(600,200);
JTextField text=new JTextField();
getContentPane().add(text);
setVisible(true);

}
}
static class mouse implements MouseListener{
@Override
public void mouseClicked(MouseEvent arg0) {
v.repaint();
}

@Override
public void mouseEntered(MouseEvent arg0) {
}

@Override
public void mouseExited(MouseEvent arg0) {
}

@Override
public void mousePressed(MouseEvent arg0) {
}

@Override
public void mouseReleased(MouseEvent arg0) {
}
}

}

在这个例子中,当我点击大窗口改变它的颜色后,如果我想在另一个窗口中写东西,我必须先点击它。

最佳答案

我可以建议 KeyboardFocusManager ?我发现这是实现我相信您想要实现的目标的最简单方法

KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(
new KeyEventDispatcher() {
public void dispatchKeyEvent(KeyEvent ke) {
//TODO: fill this in
}
});

关于java - 即使窗口未聚焦,也使 JTextField 接收输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31793439/

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