无法自动选择JOption窗格showInputDialog

时间:2018-11-03 22:38:42

标签: java swing joptionpane

所以在我的主要方法的开头,我有一个JOptionPane

JFrame frame = new JFrame("Input");
String progName = JOptionPane.showInputDialog(frame, "Name?");

但是,在开始键入之前,我需要手动单击弹出窗口。有什么方法可以使它在我运行该程序后立即自动“选择”弹出窗口,以便在我开始键入时将其显示在文本框中。如果使用JOptionPane无法做到这一点,那么我可以使用其他替代方法,我只需要考虑上述约束即可获得用户输入的字符串。

1 个答案:

答案 0 :(得分:0)

我创建了一个简单的示例,其中询问用户名称的逻辑集中在一个方法中。在应用程序开始时以及每次单击按钮时都会调用此方法。

这样,在应用程序启动时以及每次他/她希望更改输入值时,用户都被迫输入数据。

int* merge(list** heap, int n, int k) {
    int* sorted;
    node* low;

    sorted = (int*)malloc(k * n * sizeof(int));

    int i = 0;
    while ((low = pick(heap)) != NULL) {
        heapify(heap, 0, k);
        sorted[i++] = low->val;
        free(low);
    }
    return sorted;
}

请注意在将标签添加到内容窗格后以及每次单击按钮时如何调用getNewTextForLabel(...)方法。

此外,正如VGR正确指出的,不在主应用程序线程内运行任何Swing代码也是一种好习惯。 您可以查看秋千(here's a classic example)的Java教程。

下面是一些在单独的线程上运行框架的示例代码。

void findNextInPreOrder(Node node, int key) {
    if (node == null) {
        return;
    }
    if (node.value == key) {
        if (node.left != null) {
            System.out.print("Next is on left: " + node.left.value);
        } else if (node.right != null) {
            System.out.print("Next is on right: " + node.right.value);
        } else {
            System.out.print("There is no next node.");
        }
    } else {
        findNextInPreOrder(node.left, key);
        /* then recur on left subtree */
        findNextInPreOrder(node.right, key);
        /* now recur on right subtree */
    }
}