【问题标题】:Can't focus on JTextField in JDialog无法专注于 JDialog 中的 JTextField
【发布时间】:2013-08-16 19:30:06
【问题描述】:

我正在尝试专注于 JDialog 中的 JTextField;在四处寻找类似问题后,我尝试了this link 中的所有建议,但没有任何建议奏效。

我试图关注的组件是在一个名为“InputTaskWindow”的类中创建的,我试图从一个名为“MainWindow”的类中创建一个对话框。这就是问题所在(在“MainWindow”内):

public  class NewTask extends AbstractAction {

JList mTaskList;
JTextArea mDetailsTextArea;

public NewTask (JList tl, JTextArea dta){
    mTaskList = tl;
    mDetailsTextArea = dta;
}

public void actionPerformed(ActionEvent e) {
    int option = 0;
    InputTaskWindow inputTaskWindow = new InputTaskWindow();
    JOptionPane optionPane = new JOptionPane(inputTaskWindow.createComponents(), JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);

    JDialog dialog = optionPane.createDialog("New Task");

    dialog.setSize(200, 200);

    dialog.pack();

    ((JTextField) inputTaskWindow.getComponent(inputTaskWindow.NAMETF)).requestFocus();

    dialog.setVisible(true);

    if (optionPane.getValue() != null){
        option = (Integer)optionPane.getValue();
    }

    if (option == JOptionPane.OK_OPTION){
        Task t = inputTaskWindow.getTask();
        activeDay.addTask(t);
    }

    populateLists(mTaskList);
}

我将尝试访问的 JTextField 放在 GUI 类中的 JComponents 数组中;我已经使用 getComponents() 方法访问了其他组件,所以我知道这指向了正确的东西。

我尝试过 requestFocus()、requestFocusInWindow(),在 NewTask 类中添加一个祖先监听器,并在 InputTaskWindow 中创建 JTextField 时添加一个祖先监听器(在这两种情况下,我都将它添加到 JTextField 并使用RequestFocusListener 类在链接中描述)。任何帮助将不胜感激。

【问题讨论】:

  • 我认为您应该修改您的命名约定,以便于阅读。除此之外,不要调用requestFocus,而是尝试调用setFocusable(true)
  • 我看不到您尝试将JTextField 添加到JDialog 的位置
  • Maxim:其实我不是直接加的;它在 InputTaskWindow 中创建的 JPanel 中,该 JPanel 在 createComponents() 中传递给对话框。我需要先关注 JPanel 吗?
  • 你是对的,常见问题,在这里解决了几次,不同的方式
  • 发布您的SSCCE 来证明问题。

标签: java swing focus jtextfield jdialog


【解决方案1】:

我还没有确定问题出在哪里,但我决定放弃这段代码。我强烈怀疑这个问题与刷新功能有关,而不是对焦点方法的误解(我的第一个假设)。代码太复杂了,无法整理,所以我正在考虑关闭这个问题。

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多