Java 如何在单击确认对话框的确定按钮后返回到摆动框架

Java 如何在单击确认对话框的确定按钮后返回到摆动框架,java,swing,Java,Swing,选中一个复选框,并检查与其相关的文本字段是否填充了输入 chckbxDictionary = new JCheckBox(); txtDictionaryStartPage = new JTextField(); JButton btnSubmit = new JButton("Submit"); btnSubmit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent

选中一个复选框,并检查与其相关的文本字段是否填充了输入

 chckbxDictionary = new JCheckBox();
 txtDictionaryStartPage = new JTextField();    
 JButton btnSubmit = new JButton("Submit");
 btnSubmit.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e) {
      if(chckbxDictionary.isSelected()){
            if(txtDictionaryStartPage.getText().equals("")){
                    int type=JOptionPane.showConfirmDialog(null, "enter start page", "", JOptionPane.OK_CANCEL_OPTION);
                    if(type==JOptionPane.OK_OPTION){
                        //if ok return to frame and focus txtDictionaryStartPage for user input
                    }
                }
       }
  }
}

单击“确认”对话框上的“确定”按钮后,我想返回jframe并聚焦用户输入输入所需的文本字段,然后等待输入。

假设他们属于同一类,根据:

公共布尔请求FocusInWindow()

请求删除此组件 获取输入焦点。有关详细信息,请参阅Component.requestFocusInWindow() 此方法的完整描述。如果你想要更多 有关焦点的信息,请参阅中的“如何使用焦点子系统”一节 Java教程

因此,在您的情况下,您可以:

if(type==JOptionPane.OK_OPTION){
    txtDictionaryStartPage.requestFocusOnWindow();
}

假设他们属于同一类,根据:

公共布尔请求FocusInWindow()

请求删除此组件 获取输入焦点。有关详细信息,请参阅Component.requestFocusInWindow() 此方法的完整描述。如果你想要更多 有关焦点的信息,请参阅中的“如何使用焦点子系统”一节 Java教程

因此,在您的情况下,您可以:

if(type==JOptionPane.OK_OPTION){
    txtDictionaryStartPage.requestFocusOnWindow();
}

如果他们在同一个类中,您可以执行以下操作:

 chckbxDictionary = new JCheckBox();
 txtDictionaryStartPage = new JTextField();    
 JButton btnSubmit = new JButton("Submit");
 btnSubmit.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e) {
      if(chckbxDictionary.isSelected()){
            if(txtDictionaryStartPage.getText().equals("")){
                    int type=JOptionPane.showConfirmDialog(null, "enter start page", "", JOptionPane.OK_CANCEL_OPTION);
                    if(type==JOptionPane.OK_OPTION){
                        txtDictionaryStartPage.requestFocusInWindow();
                        frame.setVisible(true);
                    }
                }
       }
  }
}

我不确定部件
frame.setVisible(true)是必需的,但请重试。如果你把它放在你的代码中,它不会有任何伤害。

如果它们在同一个类中,你可以做:

 chckbxDictionary = new JCheckBox();
 txtDictionaryStartPage = new JTextField();    
 JButton btnSubmit = new JButton("Submit");
 btnSubmit.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e) {
      if(chckbxDictionary.isSelected()){
            if(txtDictionaryStartPage.getText().equals("")){
                    int type=JOptionPane.showConfirmDialog(null, "enter start page", "", JOptionPane.OK_CANCEL_OPTION);
                    if(type==JOptionPane.OK_OPTION){
                        txtDictionaryStartPage.requestFocusInWindow();
                        frame.setVisible(true);
                    }
                }
       }
  }
}

我不确定部件
frame.setVisible(true)是必需的,但请重试。如果你把它放在你的代码中,它不会有任何伤害。

showConfirmDialog
的第一个参数应该从
null
更改为
btnSubmit

int type=JOptionPane.showConfirmDialog(btnSubmit, "enter start page", "", JOptionPane.OK_CANCEL_OPTION);
if(type==JOptionPane.OK_OPTION){
      txtDictionaryStartPage.requestFocusOnWindow();
}

showConfirmDialog
的第一个参数应该从
null
更改为
btnSubmit

int type=JOptionPane.showConfirmDialog(btnSubmit, "enter start page", "", JOptionPane.OK_CANCEL_OPTION);
if(type==JOptionPane.OK_OPTION){
      txtDictionaryStartPage.requestFocusOnWindow();
}

chckbxDictionary和JFrame在同一个文件(同一类)中吗?为了更快地获得更好的帮助,请发布(最小完整可验证示例)或(简短、自包含、正确的示例)。chckbxDictionary和JFrame在同一个文件(同一类)中吗?为了更快地获得更好的帮助,请发布(最小完整可验证示例)或(简短、独立、正确的示例)。文本字段不在焦点位置,单击“确定”按钮时我无法返回到帧以接受输入文本字段不在焦点位置,单击“确定”按钮时我无法返回到帧以接受输入我想,我很确定您需要frame.setVisible(true);大概是按钮(actionPerformed回调的事件源)位于框架中,因此框架必须可见,用户才能单击按钮。因此调用frame.setVisible(true)是多余的;我认为,我非常确定您需要frame.setVisible(true);大概是按钮(actionPerformed回调的事件源)在框架中,因此用户单击按钮时框架必须可见。因此调用frame.setVisible(true)是多余的;