Java 为所有字段设置焦点
我注意到我可以使用getName()作为技巧的一部分。 但我真的不知道从哪里开始。我应该使用哪种类型的侦听器(假设文本字段/或框当前正在闪烁/选中)Java 为所有字段设置焦点,java,Java,我注意到我可以使用getName()作为技巧的一部分。 但我真的不知道从哪里开始。我应该使用哪种类型的侦听器(假设文本字段/或框当前正在闪烁/选中) 这是我之前的问题,谢谢你们的帮助。 我意识到,对于我正在创建的每个组件(Textfield),我必须插入一个类似requestFocus(或使用transferFocus)的语句。 是否可以将此策略应用于所有字段 我有几个文本字段和组合框。我遇到的问题是,我不想为每个字段/框编写方法 例如,我编写了这样一个方法 private JTextFie
这是我之前的问题,谢谢你们的帮助。 我意识到,对于我正在创建的每个组件(Textfield),我必须插入一个类似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()
但要做到这一点,我仍然需要创建一个方法来执行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,则必须编写另一个类似的方法。事实上,即使在使用一个组合框(titleBox)的情况下,我最终还是会为titleBox编写一个方法
所以我的问题是:有没有一种方法可以编写一个通用的方法来调用所有人的焦点(可能是ComboBox类型的方法)
感谢您并为这篇长篇文章感到抱歉。为什么不在您的
setComboxFocus()
方法中加入一个JComboBox
参数,该方法允许您将该侦听器设置为任何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(C++学生2年)是如此新奇…老兄,我被这件事压得喘不过气来。。。希望我能尽快学会java。
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();
}
}
});
}