【发布时间】:2016-10-25 16:08:35
【问题描述】:
我需要使用 JOptionPane 读取 2 个用户输入的数字,然后显示这两个数字的总和和乘积,我无法理解如何为该程序制作摇摆框。
【问题讨论】:
-
为了获得更好的帮助,请尽快发布minimal reproducible example 并说明该代码出了什么问题以及应该发生什么。
标签: java swing joptionpane
我需要使用 JOptionPane 读取 2 个用户输入的数字,然后显示这两个数字的总和和乘积,我无法理解如何为该程序制作摇摆框。
【问题讨论】:
标签: java swing joptionpane
有两种方法可以做到这一点:
JOptionPane
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(在您下载课程后),如示例中所示。
【讨论】: