如何使用 JOptionPane 为公式输入 2 个数字?

How to use JOptionPane to input 2 numbers for a formula?

我需要使用 JOptionPane 读入 2 个用户输入的数字,然后显示这两个数字的总和和乘积,我无法理解如何为这个程序制作摆动框。

有两种方法可以做到这一点:

  1. 创建自定义面板并将面板添加到 JOptionPane
  2. JOptionPane 为您构建面板

这是两者的示例:

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

public class OptionPanePanel
{
    private static void createAndShowUI()
    {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo( null );
        frame.setVisible( true );

        //  Build a custom panel

        JPanel panel = new JPanel( new GridLayout(2, 2) );
        panel.setBackground(Color.RED);
        panel.add( new JLabel("First Name") );
        JTextField firstName = new JTextField(10);
//      firstName.addAncestorListener( new RequestFocusListener(false) );
        panel.add( firstName );
        panel.add( new JLabel("Last Name") );
        JTextField lastName = new JTextField(10);
        panel.add( lastName );

        int result = JOptionPane.showConfirmDialog(
            frame, // use your JFrame here
            panel,
            "Use a Panel",
            JOptionPane.YES_NO_OPTION,
            JOptionPane.PLAIN_MESSAGE);

        if(result == JOptionPane.YES_OPTION)
        {
            System.out.println(firstName.getText() + " : " + lastName.getText());
        }
        else
        {
            System.out.println("Canceled");
        }

        //  Let Option Pane build the panel for you

        JTextField firstName2 = new JTextField(10);
//      firstName2.addAncestorListener( new RequestFocusListener() );
        Object[] msg = {"First Name:", firstName2, "Last Name:", lastName};

        result = JOptionPane.showConfirmDialog(
            frame,
            msg,
            "Use default layout",
            JOptionPane.OK_CANCEL_OPTION,
            JOptionPane.PLAIN_MESSAGE);

        if (result == JOptionPane.YES_OPTION)
        {
            System.out.println(firstName.getText() + " : " + lastName.getText());
        }
        else
        {
            System.out.println("Canceled");
        }
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowUI();
            }
        });
    }
}

注:

当您 运行 上面的代码焦点将放在 JOptionPane 上的按钮上。

如果您希望焦点位于文本字段上,则需要使用 Request Focus Listener(在您下载 class 之后),如示例中所示。