如何将“ JOptionPane.showConfirmDialog”弹出窗口上的默认焦点从“确定”按钮更改为“文本字段”?

时间:2019-02-05 15:15:41

标签: java swing user-interface

如何将JOptionPane.showConfirmDialog弹出窗口上的默认焦点从Ok按钮更改为textfield

我的代码:

public String userPassword() {

    Box box = Box.createHorizontalBox();

    JLabel j1 = new JLabel("Password: ");
    box.add(j1);

    JPasswordField jpf = new JPasswordField(24);
    box.add(jpf);

    JOptionPane.showConfirmDialog(null, box, "Enter your password", JOptionPane.OK_CANCEL_OPTION);
    char[] input = jpf.getPassword();

    String password = String.valueOf(input);
    return password;

}

2 个答案:

答案 0 :(得分:0)

代替使用#include <gtk/gtk.h> void print_geometry(GtkWidget* widget, GdkRectangle* geometry) { GdkDisplay *dpy = gtk_widget_get_display(widget); GdkWindow *win = gtk_widget_get_window(widget); GdkMonitor *monitor = gdk_display_get_monitor_at_window(dpy, win); gdk_monitor_get_geometry(monitor, geometry); gint width = geometry->width; gint height = geometry->height; g_print("Screen max: %dW X %dH\n", width, height); gtk_window_set_default_size(GTK_WINDOW(widget), width, height ); } int main(int argc, char *argv[]) { GtkWidget *window; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); GdkRectangle geometry; g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(window, "realize", G_CALLBACK(print_geometry), &geometry); gtk_widget_show_all(window); gtk_main(); } ,可以使用JOptionPane.showConfirmDialog来创建所需的对话框,如下所示:

JOptionPane

答案 1 :(得分:0)

JOptionPane.showConfirmDialog(...)本身调用 JOptionPane.showOptionDialog(...) 那么您可以像下面一样使用 JOptionPane.showOptionDialog(...)

JOptionPane.showOptionDialog(null,
                box,
                "My Message Dialog",
                JOptionPane.OK_CANCEL_OPTION,
                JOptionPane.INFORMATION_MESSAGE,
                null, new Object[]{"Ok", "Cancel"}, box);