【问题标题】:How to use JOptionPane to input 2 numbers for a formula?如何使用 JOptionPane 为公式输入 2 个数字?
【发布时间】:2016-10-25 16:08:35
【问题描述】:

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

【问题讨论】:

标签: java swing joptionpane


【解决方案1】:

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

  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(在您下载课程后),如示例中所示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多