gpt4 book ai didi

java - 更改 JFrame 的内容 Pane 后的焦点组件

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

我正在更改我的 JFrame 的内容 Pane ,并且只想在新面板中聚焦一个 JTextField。所以我这样做:

JPanel pNew = new JPanel();
frame.setContentPane(pNew);
frame.revalidate();
frame.repaint();

public JPanel() {
...
tf.requestFocusInWindow();
}

当我使用 setVisible(false)setVisible(true) 而不是重新验证和重新绘制我的框架时,我得到了我想要的效果,但这不是我想要的方式去做。

除了重新验证和重新绘制之外,setVisible() 中还会发生什么?

最佳答案

A CardLayout通常用于交换面板。

但是,即使 CardLayout 的默认实现也不会在交换面板时将焦点设置在面板上。但是你可以查看Card Layout Focus这将允许您在面板切换时请求将焦点放在面板上。

requestFocusInWindow() 方法仅适用于显示在可见框架中的组件。所以你不能在类的构造函数中调用方法。

您可以使用 Dialog Focus 中的 RequestFocsListener .它将等到面板被添加到可见的 GUI 之后才会生成事件。

关于java - 更改 JFrame 的内容 Pane 后的焦点组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32441480/

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