当前位置: 首页 > 知识库问答 >
问题:

无法自动选择JOption窗格showInputDialog

孟福
2023-03-14

因此,在我的main方法的最开始,我有一个这样的JOptionPane:

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

然而,在我开始输入之前,我需要手动点击弹出菜单。有什么方法可以让我一运行程序,它就会自动“选择”弹出窗口,这样当我开始输入时,它就会出现在文本框中。如果用< code>JOptionPane不能做到这一点,我可以用其他方法,我只需要得到一个用户输入的字符串,并记住上面的约束。

共有1个答案

暴阳州
2023-03-14

我创建了一个简单的例子,其中询问用户名的逻辑集中在一个方法中。这个方法在应用程序开始的时候和每次你点击一个按钮的时候被调用。

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

public class Jf53136132 extends JFrame {

    private static final long serialVersionUID = -3336501835025139522L;

    private JPanel contentPane;



    public Jf53136132() {
        setTitle("Jf53136132");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);

        JPanel panel = new JPanel();
        contentPane.add(panel, BorderLayout.CENTER);

        JButton btnInvokeJoptionpane = new JButton("set some text on label");
        panel.add(btnInvokeJoptionpane);

        JLabel lblx = new JLabel("-x-");
        panel.add(lblx);

        getNewTextForLabel(lblx);

        btnInvokeJoptionpane.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                getNewTextForLabel(lblx);
            }
        });
    }



    private void getNewTextForLabel(JLabel label) {
        String inputText = JOptionPane.showInputDialog("Enter the text for the label");
        System.out.println("you entered <" + inputText + ">");
        if (inputText != null && !inputText.trim().isEmpty()) {
            label.setText(inputText);
        }
    }

}

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

此外,正如VGR正确指出的,不在主应用程序线程中运行任何Swing代码是一个好习惯。可以看看swing的java教程(这里有一个经典的例子)。

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

public class Main {

    private static void createAndShowGUI() {
        Jf53136132 f = new Jf53136132();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setPreferredSize(new Dimension(640, 480));
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }



    void execute() {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                createAndShowGUI();
            }
        });
    }



    public static void main(String[] args) {
        new Main().execute();
    }

}
 类似资料:
  • 想要输出这个程序,它告诉2个单词是否是字谜。我想知道如何将所有系统.out.print命令更改为J选项窗格命令!我很乐意得到任何帮助,因为我是一名一年级的程序员,并且有这个任务到期。 }

  • 希望有人能帮我做这件事,我对Java很在行。我的问题是,当我打印数组时,会得到一些字符,我想打印数组中的点数。(请忽略不相关的代码,我甚至还没有完成)

  • 我正在尝试制作一个乘法表,用户输入所需的表格以及他/她想要显示多少个数字(例如,输入2表示表格,5表示数字将给出2,4,6,8,10)。 我已经尝试了以下方法,但无法给出所需的输出。 它应该打印乘法表,却在打印:< code>[I@3d494fbf。

  • 问题内容: 当内容的高度增加时,有什么方法可以自动向下滚动ScrollPane控件?例如,我在屏幕底部(在ScrollPane内部)有一个TitledPane,当我展开它时,我希望ScrollPane向下滚动,以便可以看到TitledPane的全部内容。 问题答案: 您可以结合使用和和来实现该行为 第一个是获取titlePane的坐标,第二个是设置scrollPane的垂直栏位置。请注意,它的范围

  • 我有一个带有组合框的xaml。由于某种原因,我在那里有一些项目,我不能选择它们,当我选择一个项目时,它通常不允许我更改我的选择,如果它更改了,它仅适用于某些值。这是代码: 我希望我写的很清楚,因为我把它从电脑复制到了手机上。基本上,我有所有的用户,并按部门对他们进行分类。用户只能看到他所在部门的文档,并且可以选择绑定词典中可用的文档。如果不可用,组合框中的项目将为红色且不可检查。这个管用。唯一没有

  • 我该怎么办?要去哪里买什么?我遇到了问题,我尝试了删除*和只删除,但这些并没有真正的工作 }