gpt4 book ai didi

java - 聚焦所有领域

转载 作者:行者123 更新时间:2023-12-02 08:23:42 24 4
gpt4 key购买 nike

<小时/>

我注意到我可以使用 getName() 作为技巧的一部分。 What is java.awt.Component.getName() and setName() used for?但我真的不知道从哪里开始。我应该使用什么类型的监听器(假设文本字段/或框当前正在闪烁/已选择)

<小时/>

这是我之前的问题,谢谢大家的帮助。 How do I use requestFocus in a Java JFrame GUI?

我意识到,对于我正在创建的每个组件(文本字段),我必须插入一个像 requestFocus 之类的语句(或使用transferFocus)。是否可以将此策略应用于所有领域???

我有几个文本字段和组合框。我遇到的问题是我不想为每个字段/框编写方法。

比如我写一个这样的方法

private JTextField getFirstNameEntry() {
.... do something
}

因为我的老师是这样写他的程序的

private JPanel getJContentPane() {
jContentPane = new JPanel();
jContentPane.setLayout(new java.awt.FlowLayout(FlowLayout.LEADING));


jContentPane.add(makeLabel(" First Name *", 100, 20));
jContentPane.add(getFirstNameEntry(), null);

jContentPane.add(makeLabel(" Middle Initial", 100, 20));
jContentPane.add(getMiddleInitialEntry(), null);
// etc

return jContentPane;

但是,为了节省冗余(这就是我最初的动机),假设我有一个盒子,我可以简单地在上面的方法中添加以下代码:getJContentPane()

titleBox = new JComboBox(new String[]{"Mr.","Mrs.","Ms.","Dr.","Prof.","Rev."});
jContentPane.add(titleBox);

但是这样做,我仍然需要创建一个方法来执行 addItemListener

  private void setComboBoxFocus() {
titleBox.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent e){
if(e.getStateChange() == ItemEvent.SELECTED)
{
String titleSelected = titleBox.getSelectedItem().toString();
System.out.println(titleSelected);
titleBox.transferFocus();
}
}
});

}

但是,这根本无法真正节省冗余。如果我要添加多个 ComboBox,我将不得不编写另一种类似的方法。事实上,即使在只有一个 ComboBox (titleBox) 的情况下,我最终仍然会为 t​​itleBox 编写一个方法。

所以我的问题是:有没有一种方法可以编写一种可以调用所有焦点的通用方法(也许是 ComboBox 类型的方法)?

谢谢您,并对这么长的帖子表示歉意。

最佳答案

为什么不在您的 setComboBoxFocus() 方法中使用 JComboBox 参数,它允许您将该监听器设置为 any JComboBox 你可能有吗?就像这样:

private void setComboBoxFocus(JComboBox box) {
box.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent e){
if(e.getStateChange() == ItemEvent.SELECTED)
{
String titleSelected = box.getSelectedItem().toString();
System.out.println(titleSelected);
box.transferFocus();
}
}
});
}

关于java - 聚焦所有领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4975336/

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